Введение в различные средства управления

Компоненты модели Simulink®, которые содержат Варианты, активированы или деактивированы на основе различного выбора, который вы выбираете.

Каждый различный выбор в вашей модели сопоставлен с названным различным управлением условного выражения. Различные средства управления определяют, какой различный выбор активен. Путем изменения значения различного управления можно переключить активный различный выбор.

В то время как каждый различный выбор сопоставлен с различным управлением, только одно различное управление может оценить к истине. Когда различное управление оценивает к истине, Симулинк активирует различный выбор, который соответствует тому различному управлению.

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

Примечание

Можно задать различные средства управления в рабочей области MATLAB®global или словаре данных.

Можно задать различные средства управления, когда Simulink.Variant возражает, выражения MATLAB (включая структуры) или как выражения, которые содержат один или несколько из этих операндов и операторов.

Различный режим управления

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

  • Выражение: Задает активный Вариант на основе оценки Различных условий.

    Различный режим управления: Выражение

  • Метка: Задает основанные на имени Различные средства управления (Режим метки активный выбор). В режиме Label Различное управление не должно быть создано в глобальной рабочей области. Также можно выбрать режим Label активный выбор из командной строки. Например, set_param (блок, 'LabelModeActiveChoice', 'Variant1').

    Различный режим управления: Метка

Операнды

  • Имена переменных, которые решают к переменным MATLAB или объектам Simulink.Parameter с целым числом или перечисленным типом данных и скалярными литеральными значениями

  • Имена переменных, которые решают к объектам Simulink.Variant

  • Скалярные литеральные значения, которые представляют целочисленные или перечисляемые значения

Операторы

  • Круглые скобки для группировки

  • Арифметика, реляционные, логические, или побитовые операторы

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

Когда вы компилируете модель, Simulink решает, что различный выбор активен, если его различное управление оценивает к true. Оценка активного варианта происходит на ранних стадиях компиляции, и активный вариант не может быть изменен, если модель компилируется

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

  • Объекты варианта Simulink в структурах не позволены.

  • Параметры Simulink в структурах не позволены.

Подходы для определения различных средств управления

Можно использовать много подходов для переключения между различным выбором — из опций, чтобы использовать при анализе прототипа для опций, требуемых для генерации кода от модели.

СпецификацияЦельПример
Скалярная переменнаяБыстрое прототипированиеA == 1
Объект Simulink.VariantУсловия варианта повторного использованияLinearController = Simulink.Variant('FUEL==2 && EMIS==1');
Объект Simulink.Parameter или переменные MATLABСгенерируйте условные выражения препроцессора для генерации кодаmode == 1, где mode может быть объектом Simulink.Parameter или переменными MATLAB
Перечислимый типУдобочитаемость улучшенного кода, потому что значения условия представлены как понятные имена вместо целых чиселLEVEL == Level.Advanced

Можно найти контрольные переменные с помощью функционального Simulink.VariantManager.findVariantControlVars.

Скалярные переменные для быстрого прототипирования

Скалярные переменные MATLAB позволяют вам выбору варианта быстрого прототипирования, когда вы все еще создаете свою модель. Они помогают вам фокусироваться больше на создании вашего различного выбора, чем на разработке выражений, которые активируют тот выбор.

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

Можно задать различные средства управления в их самой простой форме как скалярные переменные в блочном диалоговом окне параметров блока Variant Subsystem.

Полем Condition и для Linear Controller и для Nonlinear Controller является N/A, потому что само различное управление является условием.

Можно активировать один из различного выбора путем определения скалярного переменного V и устанавливания его значения к 1 в Окне Команды MATLAB.

V = 1;
Это условие активирует выбор варианта Linear Controller. Различные средства управления проигнорированы, when% символ используется.

Точно так же, если вы изменяете значение V к 2, Симулинк активирует выбор варианта Nonlinear Controller.

Объекты Simulink.Variant для различного повторного использования условия

После идентификации различного выбора, которого требует ваша модель, можно создать комплексные различные условия управлять активацией различного выбора. Задайте различные условия, когда Simulink.Variant возражает.

Объекты Simulink.Variant позволяют вам снова использовать общие различные условия через модели и помочь вам инкапсулировать комплексные различные выражения условия.

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

V=1;
V=2;

Можно преобразовать эти средства управления в выражения условия, инкапсулировавшие, когда Simulink.Variant возражает.

LinearController=Simulink.Variant('V==1');
NonLinearController=Simulink.Variant('V==2');

Можно затем задать эти объекты Simulink.Variant, когда вариант управляет в блочном диалоговом окне параметров блока Variant Subsystem.

Поле Condition теперь отражает инкапсулированное различное условие. Используя этот подход, можно разработать комплексные различные выражения условия, которые являются допускающими повторное использование.

Объекты Simulink.Parameter или переменные MATLAB для Генерации кода

Если вы намереваетесь сгенерировать код для модели, содержащей различный выбор, задайте различные контрольные переменные как объекты Simulink.Parameter или переменные MATLAB. объекты Simulink.Parameter позволяют вам задавать другие атрибуты (такие как тип данных), которые требуются для генерации кода.

VSSMODE = Simulink.Parameter;
VSSMODE.Value = 1;
VSSMODE.DataType = 'int32';
VSSMODE.CoderInfo.StorageClass = 'Custom';
VSSMODE.CoderInfo.CustomStorageClass = 'ImportedDefine';
VSSMODE.CoderInfo.CustomAttributes.HeaderFile =...
'rtwdemo_importedmacros.h';
Различные контрольные переменные, заданные как объекты Simulink.Parameter, могут иметь один из этих классов памяти:

  • Define или ImportedDefine с заданным заголовочным файлом

  • CompilerFlag

  • SystemConstant (AUTOSAR)

  • Ваш собственный класс памяти, который задает данные как макрос

Можно также преобразовать скалярную различную контрольную переменную в объект Simulink.Parameter. Смотрите Преобразовывают Различные Контрольные переменные в Simulink. Объекты параметра.

Перечислимые типы для улучшения удобочитаемости кода

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

  1. В редакторе MATLAB задайте классы, которые сопоставляют перечисляемые значения с понятными именами.

    classdef sldemo_mrv_CONTROLLER_TYPE < Simulink.IntEnumType
            enumeration
            NONLINEAR (1)
            SECOND_ORDER (2)
            end
    end
    
    classdef sldemo_mrv_BUILD_TYPE < Simulink.IntEnumType
            enumeration
            PROTOTYPE (1)
            PRODUCTION (2)
            end
    end
    
  2. Задайте объекты Simulink.Variant для этих классов в глобальной рабочей области.

    VE_NONLINEAR_CONTROLLER = Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.NONLINEAR')
    VE_SECOND_ORDER_CONTROLLER =Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.SECOND_ORDER')
    VE_PROTOTYPE =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PROTOTYPE')
    VE_PRODUCTION =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PRODUCTION')

    Используя перечислимые типы упрощает сгенерированный код, потому что он содержит имена значений, а не целых чисел.

Просмотр различных условий

Различная Легенда Условия помогает вам визуализировать различные условия, сопоставленные с моделью. Чтобы просмотреть Различную Легенду Условия, нажмите Display> Blocks> Variant Condition Legend.

Примечание

Различная Легенда Условия доступна только, когда Отображение> Блоки> Различное Условие активно.

По умолчанию Различная Легенда Условия отображает различную аннотацию условия и различное условие во время моделирования. Чтобы просмотреть различное условие в сгенерированном коде, выберите опцию условий сгенерированного кода Show на Различной Легенде Условия.

В Различной Легенде Условия различные условия на блоках аннотируются как v:c, где v является различным семантическим индикатором, и c представляет различный индекс условия. Можно щелкнуть через связанные гиперссылками различные аннотации, чтобы наблюдать, каким частям модели условие соответствует.

Когда вы нависаете над блоком, который имеет различное условие, подсказка отображает различную аннотацию и связанное различное условие для блока. Чтобы просмотреть различную подсказку аннотации условия, Различная опция Условия должна быть выбрана.

Чтобы просмотреть Различную Легенду Условия программно, используйте функцию Simulink.VariantManager.VariantLegend в окне команды MATLAB.

Операторы и операнды в различных выражениях условия

Simulink оценивает выражения условия в рамках различных средств управления, чтобы определить активный различный выбор. Можно включать следующие операнды в выражение условия:

  • Скалярные переменные

  • Объекты Simulink.Parameter, которые не являются структурами и которые имеют типы данных кроме объектов Simulink.Bus

  • Перечислимые типы

  • Круглые скобки для группировки

Различные выражения условия могут содержать операторы MATLAB, если выражение оценивает к булеву значению. В этих примерах A и B являются выражениями, которые оценивают к целому числу, и x является постоянным целочисленным литералом.

Выражения MATLAB, которые поддерживают генерацию условных выражений препроцессораЭквивалентное выражение в условном выражении препроцессора C
Арифметика
  • A + B

  • +A

  • A + B

  • A

  • A, B

  • A

  • A, B

  • A

A, B A, B
idivide(A,B)

A, B

Если значением второго операнда (B) является 0, поведение не определено.

rem(A,B)

A, B

Если значением второго операнда (B) является 0, поведение не определено.

Реляционный

A == B

A == B

A ~= B

A! = B

A < B

A < B

A > B

A > B

A <= B

A <= B

A >= B

A >= B
Логический
~A!A, где A не является целым числом
A, B A, B
A || BA || B
Поразрядно (A и B не могут оба быть постоянными целочисленными литералами),

bitand(A,B)

A, B

bitor(A,B)

A | B

bitxor(A,B)

A ^ B

bitcmp(A)

~A

bitshift(A,x)

A << x

bitshift(A,-x)

A >> x

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

Больше о

Была ли эта тема полезной?