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