Значения различного параметра в Simulink® модель активирована или деактивирована на основе различного выражения управления, которое оценивает к true
.
Каждое значение различного параметра в модели Simulink сопоставлено с названным различным выражением управления условного выражения. Различные средства управления определяют, какое значение различного параметра активно. Путем изменения значения различного управления можно переключить активное значение различного параметра.
В то время как каждое значение различного параметра сопоставлено с различным управлением, только одно различное управление может оценить к true
. Когда различное управление оценивает к true
, Simulink активирует значение, которое соответствует тому различному управлению.
Примечание
Можно указать, что вариант управляет только в MATLAB® базовое рабочее пространство или в словаре данных.
Можно задать различные средства управления как булевы выражения MATLAB или Simulink.Variant
выражения определения объекта. Выражения могут содержать один или несколько из этих Операндов и Операторов.
Переменные, которые представляют Simulink.VariantControl
объекты
Скалярные литеральные значения, которые являются целочисленными или перечисляемыми значениями
Различные выражения условия могут содержать операторы MATLAB, если выражение оценивает к булеву значению. В этих примерах, A
и B
выражения, которые оценивают до целого числа.
Выражения MATLAB, которые поддерживают генерацию условных выражений препроцессора | Эквивалентное выражение в условном выражении препроцессора C |
---|---|
Реляционный | |
| A == B |
| A != B |
Логический | |
~A | !A , где A не целое число |
A && B | A && B |
A || B | A || B |
Можно использовать много подходов для переключения между различными значениями — из опций, чтобы использовать при прототипировании для опций, требуемых для генерации кода из модели.
Переменные Scalar 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
объекты позволяют вам снова использовать общие различные условия через модели и помочь вам инкапсулировать комплексные различные выражения условия.
Примечание:
Можно задать различную контрольную переменную типа Simulink.Variant
только в базовом рабочем пространстве или в словаре данных. Определение 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
объекты позволяют вам задавать другие атрибуты (такие как тип данных), которые требуются для генерации кода.
Примечание:
Можно задать различную контрольную переменную типа Simulink.Parameter
только в базовом рабочем пространстве или в словаре данных. Определение Simulink.Parameter
тип различных контрольных переменных в маске или рабочем пространстве модели не поддерживается. Для получения дополнительной информации о местах хранения для различных контрольных переменных смотрите Места хранения для Различных Контрольных переменных (Операнды) в Различных Выражениях условия.
Simulink.Parameter
объекты в структурах и которые имеют типы данных кроме Simulink.Bus
объекты не поддерживаются.
В редакторе 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'
Используйте перечислимые типы, чтобы дать понятные имена целым числам, используемым в качестве различных значений управления.
Вы можете контрольные переменные варианта define перечислимых типов в местах хранения, как перечислено в Местах хранения для Различных Контрольных переменных (Операнды) в Различных Выражениях условия.
В Редакторе MATLAB® задайте классы, которые сопоставляют перечисляемые значения с понятными именами.
Здесь, EngType
основанный на целом числе класс перечисления, который выведен из встроенного типа данных, int32
. Класс имеет две перечислимых величины, Small
и Big
. Эти перечисляемые значения имеют базовые целочисленные значения 1
и 2
.
type EngType.m
classdef EngType < Simulink.IntEnumType enumeration Small (1) Big (2) end end
Задайте имена как варианты в 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
.
Примечание: Для различной контрольной переменной возражают с 'startup'
время активации, задавая значение перечислимого типа не поддерживается.
VCtrl = Simulink.VariantControl('Value',EngType.Small,'ActivationTime','code compile')
VCtrl = VariantControl with properties: Value: Small ActivationTime: 'code compile'
Используя перечислимые типы упрощает сгенерированный код, потому что он содержит имена значений, а не целых чисел.