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