Когда вы задаете различные условия в моделях, содержащих Variant Source и блоки Variant Sink, Simulink® оценивает различные средства управления, заданные на различных блоках, и автоматически распространяет различные условия с соединяющимися блоками, чтобы определить, какие компоненты модели активны в процессе моделирования. Simulink затем деактивировал компоненты модели, сопоставленные с неактивным выбором, и визуализирует активные связи. Simulink использует параметры блоков Variant activation time, чтобы определить период времени, когда это выбирает активный вариант. Для получения дополнительной информации о различном времени активации смотрите, Активируют Вариант Во время Различных Этапов Рабочего процесса Симуляции и Генерации кода.
Примечание
Различные аннотации условия, отображенные на компонентах модели, помогают вам визуализировать распространенные условия.
Чтобы просмотреть различные аннотации условия, на вкладке Debug, выбирают Information Overlays> Variant Legend.
Если Variant Legend не доступен на вкладке Debug, выберите Information Overlays> Variant Conditions.
В этой модели блок Variant Source имеет два входных параметров с различными условиями Var == 1
и Var==2
, соответственно. Первый вход с блоком Variant Source переходит в его второй вход прежде, чем соединиться с блоком. Второй вход с различным условием Var==2
вариант по умолчанию.
В процессе моделирования эта модель показывает три режима работы:
Различное условие | Активный выбор |
---|---|
Var == 1 | Первый вход |
Var == 1 || Var == 2 | Второй вход Variant Source и ветвь первого входа. |
Var == 2 | Второй вход Variant Source . |
В этой модели, Variant Source A
и Variant Source B
два блока Variant Source, каждый питаемый двумя входными портами и соединенный каскадным способом. Входные параметры к Variant Source A
активны когда VarA == 1
или VarA == 2
. Выход Variant Source A
ветви в одни из входных параметров Variant SourceB
. Входные параметры к Variant SourceB
активны когда VarB == 1
или VarB == 2
.
В процессе моделирования эта модель показывает восемь режимов работы:
Различное условие | Активный выбор |
---|---|
VarA == 1 && VarB == 1 | Первые входные параметры |
VarA == 1 && VarB == 2 | Первый вход Variant Source A и второй вход Variant Source B . |
VarA == 2 && VarB == 1 | Второй вход Variant Source A и первый вход Variant Source B . |
VarA == 2 && VarB == 2 | Вторые входные параметры Variant Source A и Variant Source B . |
VarA == 1 && VarB != (1,2) | Первый вход Variant Source A . |
VarA == 2 && VarB != (1,2) | Второй вход Variant Source B . |
VarA != (1,2) && VarB == 1 | 'none' |
VarA != (1,2) && VarB == 2 | Второй вход Variant Source B . |
VarA != (1,2) && VarB != (1,2) | 'none' |
В этой модели несколько блоков Variant Source используются, чтобы создать иерархическое вложение вариантов, и обеспечивает изменение на входных параметрах датчика. Разнообразный выбор для датчиков сначала сгруппирован рядом: A Series
, B Series
, и C Series
. Блок Variant Source, Device Model
, выбирает датчик из одного из рядов. Vendor
затем выбирает среди выбора датчика, обеспеченного Device Model
и XSensor
.
Simulink распространяет комплексные различные условия управления определить, какие компоненты модели активны во время компиляции.
Для получения дополнительной информации смотрите Иерархическое Вложение Различных Источников и Различных Приемников.
Сетевым различным условием является общее количество локального условия и его наследственного условия.
В этой модели, Variant Source
и Variant Source1
два single-input/single-output блока Variant Source с различными условиями V==1
и W==1
, соответственно. Параметр Allow zero active variant controls устанавливается на on
для обоих различные блоки. Когда эта опция выбрана и нет никакого активного варианта, Simulink отключает все блоки, соединенные с потоком ввода и вывода блока Variant Source.
Когда вы симулируете эту модель, Variant Source1
блокируйтесь и другие блоки в блоке Subsystem получают локальное условие W==1
распространенный от Variant Source1
блок. Наследственное условие V==1
распространен от Variant Source
блокируйтесь на блок Subsystem. Поэтому сетевое различное условие на Variant Source1
блокируйтесь и другие блоки в блоке Subsystem V==1 && W==1
. Если параметр Allow zero active variant controls устанавливается на off
для блока Variant Source затем условием на блоке Subsystem является W==1
.
Различное условие может активировать или деактивировать блок Subsystem, но различные условия не могут распространить в подсистему. Блок Subsystem может распространить различные условия от своего выходного порта, если то различное условие происходит в порте в подсистеме.
Подсистема может или быть виртуальным (сгруппированный или разгруппированный) или атомарная подсистема в зависимости от выборов, сделанных в ее диалоговом окне Block Parameters.
Сгруппированный Виртуальный: Установите флажок Treat as grouped when propagating variant conditions. Сгруппированная виртуальная подсистема имеет сплошную линию.
Разгруппированный Виртуальный: Снимите флажок Treat as grouped when propagating variant conditions. Разгруппированная виртуальная подсистема имеет пунктирную линию.
Атомарный: Установите флажок Treat as atomic unit. Атомарная виртуальная подсистема имеет сплошную линию.
Simulink распространяет различные условия по-другому к этим типам подсистемы.
В этой модели три типа подсистем предоставляются, как введено блоку Variant Source2
.
Сгруппированная виртуальная подсистема активируется когда V == 1
. Simulink распространяет различное условие активации со всеми блоками в подсистеме.
Разгруппированная виртуальная подсистема активируется когда V == 2
. Simulink распространяет различное условие активации с блоками, которые были доступны в подсистеме при маркировке виртуальной подсистемы.
Атомарная подсистема активируется когда V == 3
. Simulink не распространяет различное условие активации в эту подсистему.
Для получения дополнительной информации смотрите, Распространяют Различные Условия от Различных Исходных блоков до блоков Subsystem.
Simulink компилирует модели, на которые ссылаются, прежде, чем распространить различные условия. Различное условие может активировать или деактивировать блок Model, но различные условия не могут распространить в модель, на которую ссылаются. Блок Model может распространить различные условия от своего интерфейса (вход, вывести, или порт управления), если то различное условие происходит в порте в модели.
В этом примере, различное условие V==1
активирует блок Model iv_20_model_reference_sub
. Однако условие не распространяет в модель, на которую ссылается блок. блок Model iv_20_model_reference_sub2
распространяет то же различное условие от его выходного порта.
Argument Inport и блоки Argument Outport, взаимодействующие через интерфейс с блоками Simulink Function, не могут быть соединены с блоками Variant Sink или Variant Source. Одно различное условие должно управлять целым Simulink Function.
Рассмотрите модель slexVariantSimulinkFunctionInherit
.
В этом примере блокировке порта вызова функции в блоке Simulink Function выбрали опцию Enable variant condition. (inherit)
ключевое слово используется, чтобы задать значение для параметра Variant control. В результате блок Simulink Function наследовал различное условие от соответствующих блоков Function Caller в модели. Значение параметров Generate preprocessor conditionals также наследовано.
Примечание
Используйте диалоговое окно Configure C Step Function Interface, чтобы настроить сгенерированный интерфейс ступенчатой функции точки входа C для модели. Если порты ввода и вывода совместно используют имя аргумента и распространили различные условия, этот уровень интерфейсного управления не поддерживается.
Initialize, Reset и функциональные блоки Terminate являются предварительно сконфигурированными блоками подсистемы, которые выполняются во время модели, инициализируют, сбрасывают, и оконечные события. Подобно блоку Simulink Function эти блоки поддерживают различное распространение условия. Можно распространить различные условия в блоках Model, которые имеют порты Reset Event. Это приводит к оптимизированному существованию блоков, соединенных с портами Reset Event. Модели с неактивными Различными функциями События сброса (в моделях, на которые ссылаются) также поддерживают различное распространение условия.
Примечание
Порты события Initialize и Terminate являются всегда безусловными, потому что они управляют и значением по умолчанию модели и специфичный для блока, инициализируют и отключают события модели, на которую ссылаются. Если вы задаете блок Initialize Function или Terminate Function в модели, на которую ссылаются, это соответствует явному, инициализируют или отключают событие.
Если вы включите варианты и зададите различное условие на блоке Initialize Function или Terminate Function в модели, на которую ссылаются, различное условие не будет способствовать различному условию экземпляра блока Model.
В этом примере, Event Listener
блокируйтесь в Init
сброс
, и Term
блокам выбрали опцию Enable variant condition. Параметр Variant control Event Listener
блок задан как V==0
. Если вы изменяете значение V
к любому значению кроме 0
, Init
сброс
, и Term
блоки становятся неактивными.
Блок Variant Source может принять или виртуальные или невиртуальные входные параметры шины. При генерации кода с условными выражениями препроцессора типы шины и иерархии всех входных параметров шины должны быть тем же самым.
Однако все элементы Mux, Demux или блока-сигнала Vector Concatenate должны иметь то же различное условие.
Для получения дополнительной информации смотрите Различное Распространение Условия с Шиной.
Блок Variant Connector распространяет различные условия ко всем связанным компонентам в физической сети. Смотрите, Variant Connector (Simscape).
Различное распространение условия от Функции Simulink в блоке Stateflow не поддерживается.
Блок Variant Connector не распространяет различное условие через контур между физической сетью Simscape™ и блоками Simulink, соединенными с ним.