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

Когда вы задаете различные условия в моделях, содержащих 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 оценивает это, блоки, сопоставленные с тем условием, никогда не активны.

    Например, In4 блок соединяется с Variant Source1 блокируйтесь, чьим условием является V==1. Variant Source1 соединяется с Variant Source2 блокируйтесь, который активирует Variant Source1 только, когда V==4. Поэтому In4 может только быть активным когда 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

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 Sink или Variant Source. Одно различное условие должно управлять целым Simulink Function.

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

В этом примере блокировке порта вызова функции в блоке 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 являются всегда безусловными, потому что они управляют и значением по умолчанию модели и специфичный для блока, инициализируют и отключают события модели, на которую ссылаются. Если вы задаете Инициализировать функциональный блок в модели, на которую ссылаются, это соответствует явному, инициализируют событие.

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

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

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

Для получения дополнительной информации смотрите Условия Варианта Распространения к Подсистемам.

Различное распространение условия с Bus

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

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

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

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

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

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

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

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

Связанные примеры

Больше о