Значения различного параметра в модели Simulink® активированы или деактивированы на основе различного выражения управления, которое оценивает к true.
Каждое значение различного параметра в модели Simulink сопоставлено с названным различным выражением управления условного выражения. Различные средства управления определяют, какое значение различного параметра активно. Путем изменения значения различного управления можно переключить активное значение различного параметра.
В то время как каждое значение различного параметра сопоставлено с различным управлением, только одно различное управление может оценить к true. Когда различное управление оценивает к true, Simulink активирует значение, которое соответствует тому различному управлению.
Примечание
Можно указать, что вариант управляет только в базовом рабочем пространстве MATLAB® или в словаре данных.
Можно задать различные средства управления как булевы выражения MATLAB, которые содержат один или несколько из этих операндов и операторов.
Переменные, которые представляют Simulink.VariantControl объекты
Скалярные литеральные значения, которые являются целочисленными или перечисляемыми значениями
Различные выражения условия могут содержать операторы MATLAB, если выражение оценивает к булеву значению. В этих примерах, A и B выражения, которые оценивают до целого числа и x постоянный целочисленный литерал.
| Выражения MATLAB, которые поддерживают генерацию условных выражений препроцессора | Эквивалентное выражение в условном выражении препроцессора C |
|---|---|
| Реляционный | |
| A == B |
| A != B |
| Логический | |
~A | !A, где A не целое число |
A && B | A && B |
A || B | A || B |
Когда вы компилируете модель, Simulink решает, что значение активно, если его различное выражение управления оценивает к true. Оценка активного варианта происходит на ранних стадиях компиляции, и активный вариант не может быть изменен, если модель скомпилирована.
Можно использовать много подходов для переключения между различными значениями — из опций, чтобы использовать при прототипировании для опций, требуемых для генерации кода из модели.
Скалярные переменные MATLAB позволяют вам значениям варианта быстрого прототипирования, когда вы все еще создаете свою модель. Они помогают вам фокусироваться больше на создании ваших различных значений, чем на разработке выражений, которые активируют тот выбор.
В редакторе MATLAB задайте варианты в их самой простой форме как скалярные переменные в Simulink.VariantVariable объект.
vpObj = Simulink.VariantVariable('Choices',{'VCtrl==1', 1000, 'VCtrl==2', 2000})
vpObj = VariantVariable with 2 choices: Condition Value __________ _____ VCtrl == 1 1000 VCtrl == 2 2000 Specification: '' Use getChoice, setChoice, addChoice, removeChoice to access, modify, add or remove choices
Активируйте одно из различных значений путем определения контрольной переменной, VCtrl, и устанавливание его значения к 1 в Simulink.VariantControl объект. Это условие активирует значение 1000 и присвоения это значение к vpObj.
VCtrl = Simulink.VariantControl('Value', 1, 'ActivationTime', 'update diagram')
VCtrl =
VariantControl with properties:
Value: 1
ActivationTime: 'update diagram'
Если вы изменяете значение VCtrl к 2, Simulink® устанавливает значение vpObj к 2000.
VCtrl.Value = 2;
После идентификации различных значений, которых требует ваша модель, можно создать комплексные различные условия управлять активацией различных значений параметров путем определения различных условий как Simulink.Variant объекты. Simulink.Variant объекты позволяют вам снова использовать общие различные условия через модели и помочь вам инкапсулировать комплексные различные выражения условия.
В Редакторе MATLAB® инкапсулируйте различные выражения управления как Simulink.Variant объекты.
LinearController=Simulink.Variant('VCtrl==1'); NonLinearController=Simulink.Variant('VCtrl==2');
Задайте Simulink.Variant объекты как вариант управляют в Simulink.VariantVariable объект.
vpObj = Simulink.VariantVariable('Choices',{'LinearController',1000,'NonLinearController',2000})
vpObj =
VariantVariable with 2 choices:
Condition Value
___________________ _____
LinearController 1000
NonLinearController 2000
Specification: ''
Use getChoice, setChoice, addChoice, removeChoice to access, modify, add or
remove choices
Активируйте одно из различных значений путем определения контрольной переменной, VCtrl, и устанавливание его значения к LinearController в Simulink.VariantControl объект. Это условие активирует значение 1000 и присвоения это значение к vpObj.
VCtrl = Simulink.VariantControl('Value',1,'ActivationTime','update diagram')
VCtrl =
VariantControl with properties:
Value: 1
ActivationTime: 'update diagram'
Используя этот подход, можно разработать комплексные различные выражения условия, которые являются допускающими повторное использование.
Если вы намереваетесь сгенерировать код для модели, содержащей различные значения параметров, задайте различные контрольные переменные как переменные MATLAB® или Simulink.Parameter объекты. 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 or ImportedDefine с заданным заголовочным файлом
CompilerFlag
SystemConstant (AUTOSAR)
Ваш собственный класс памяти, который задает данные как макрос
Можно также преобразовать скалярную различную контрольную переменную в Simulink.Parameter объект. Для получения дополнительной информации смотрите, Преобразуют Различные Контрольные переменные в Объекты Simulink.Parameter.
Задайте объект как различное управление с помощью Simulink.VariantVariable объект.
vpObj = Simulink.VariantVariable('Choices', {'VCtrl == 1',1000,'VCtrl == 2',2000});
Активируйте одно из различных значений путем определения контрольной переменной VCtrl и устанавливание его значения к VSSMODE в Simulink.VariantControl объект. Это условие активирует значение 1000 и присвоения это значение к vpObj.
VCtrl = Simulink.VariantControl('Value',VSSMODE,'ActivationTime','code compile')
VCtrl =
VariantControl with properties:
Value: [1x1 Simulink.Parameter]
ActivationTime: 'code compile'
Используйте перечислимые типы, чтобы дать понятные имена целым числам, используемым в качестве различных значений управления.
В Редакторе MATLAB® задайте классы, которые сопоставляют перечисляемые значения с понятными именами.
Задайте имена как варианты в Simulink.VariantVariable объект.
vpObj = Simulink.VariantVariable('Choices', {'VCtrl == EngType.Small',3.5,'VCtrl == EngType.Big',8.5})
vpObj =
VariantVariable with 2 choices:
Condition Value
______________________ _____
VCtrl == EngType.Big 8.5000
VCtrl == EngType.Small 3.5000
Specification: ''
Use getChoice, setChoice, addChoice, removeChoice to access, modify, add or
remove choices
Активируйте одно из различных значений путем определения контрольной переменной VCtrl и устанавливание его значения к EngType.Small в Simulink.VariantControl объект. Это условие активирует значение 3.5 и присвоения это значение к vpObj.
VCtrl = Simulink.VariantControl('Value',EngType.Small,'ActivationTime','code compile')
VCtrl =
VariantControl with properties:
Value: Small
ActivationTime: 'code compile'
Используя перечислимые типы упрощает сгенерированный код, потому что он содержит имена значений, а не целых чисел.