Когда вы задаете различные условия в моделях, содержащих 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:3
, Simulink подсвечивает части модели, которые активируются когда условие 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
. Входные параметры toVariant 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. Сгруппированная виртуальная подсистема имеет сплошную линию.
Разгруппированный Виртуальный: Снимите флажок Treat as grouped when propagating variant conditions. Разгруппированная виртуальная подсистема имеет пунктирную линию.
Атомарный: Установите флажок Treat as atomic unit. Атомарная виртуальная подсистема имеет сплошную линию.
Simulink распространяет различные условия по-другому к этим типам Подсистемы.
В этой модели три типа подсистем предоставляются, как введено блоку Variant Source2
.
Сгруппированная виртуальная подсистема активируется когда V == 1
. Simulink распространяет различное условие активации со всеми блоками в подсистеме.
Разгруппированная виртуальная подсистема активируется когда V == 2
. Simulink распространяет различное условие активации с блоками, которые были доступны в подсистеме при маркировке виртуальной подсистемы.
Атомарная подсистема активируется когда V == 3
. Simulink не распространяет различное условие активации в эту подсистему.
Для получения дополнительной информации смотрите Условия Варианта Распространения к Подсистемам.
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 / функциональный блок Terminate в модели, на которую ссылаются, он соответствует явному, инициализируют / оконечное событие.
Если вы включите варианты и зададите различное условие на Initialize / функциональный блок Terminate в модели, на которую ссылаются, то различное условие не будет способствовать различному условию экземпляра блока модели - ссылки.
В этом примере, Event Listener
блокируйтесь в Init
сброс
, и Term
блокам выбрали опцию Enable variant condition. Параметр Variant control Event Listener
блок задан как V==0
. Если вы изменяете значение V
к любому значению кроме 0
, Init
сброс
, и Term
блоки становятся неактивными.
Различное условие может активировать или деактивировать блок Subsystem, но различные условия не могут распространить в подсистему. Блок Subsystem может распространить различные условия от своего выходного порта, если то различное условие происходит в порте в подсистеме.
Для получения дополнительной информации смотрите Условия Варианта Распространения к Подсистемам.
Блок Variant Source может принять или виртуальные или невиртуальные входные параметры шины. При генерации кода с условными выражениями препроцессора типы шины и иерархии всех входных параметров шины должны быть тем же самым.
Однако все элементы Mux, Demux или блока-сигнала Vector Concatenate должны иметь то же различное условие.
Для получения дополнительной информации смотрите Различное Распространение Условия с Шиной.
Различное распространение условия от Функции Simulink в блоке Stateflow не поддерживается.
Когда вы симулируете модель вариантов Inline с блоками Simscape™, блоки Simscape становятся безусловными.
Генерация кода С++ не поддерживается для моделей, которые содержат распространенные различные условия.
Различное распространение условия не поддерживается с корневыми портами элемента шины.