Значения параметра варианта в 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. Параметр Объекты .
Задайте объект как вариант управления с помощью 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 ® Editor задайте классы, которые сопоставляют перечисленные значения со значимыми именами.
Задайте имена как варианты выбора в 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'
Использование перечисляемых типов упрощает сгенерированный код, поскольку он содержит имена значений, а не целых чисел.