Вариант в параметрах исполнения

Значения параметра варианта в Simulink® модель активируется или деактивируется на основе варианта управляющего выражения, которое вычисляется как true.

Каждое значение параметра варианта в модели Simulink связано с условным выражением, называемым выражением управления вариантом. Варианты управления определяют, какое значение параметра варианта активно. Путем изменения значения управления вариантом можно переключить активное значение параметра варианта.

В то время как каждое значение параметра варианта связано с управлением вариантом, только одно управление варианта может вычислить, чтобы true. Когда исполнительное управление вычисляет, чтобы trueSimulink активирует значение, соответствующее этому варианту управления.

Примечание

Можно задать элементы управления вариантом только в MATLAB® базовое рабочее пространство или словарь данных.

Можно задать элементы управления вариантом как логические выражения MATLAB, которые содержат один или несколько из этих операндов и операторов.

Операнды

  • Переменные, которые представляют Simulink.VariantControl объекты

  • Скалярные буквальные значения, которые являются целым числом или перечисленными значениями

Операторы

Выражения условий варианта могут содержать операторы MATLAB, при условии, что выражение вычисляет логическое значение. В этих примерах A и B являются выражениями, которые вычисляются как целое число, и x является постоянным целым литералом.

Выражения MATLAB, поддерживающие генерацию предварительных условийЭквивалентное выражение в условном препроцессоре C
Относительный

A == B

A == B

A ~= B

A != B
Логичный
~A!A, где A не является целым числом
A && BA && B
A || BA || 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 на 2Simulink ® устанавливает значение vpObj на 2000.

VCtrl.Value = 2;

Задайте 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'

Используя этот подход, можно разработать комплексные выражения условий исполнения, которые являются переиспользуемыми.

Simulink. Параметр объекты или Переменный MATLAB для генерации кода

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

Использование перечисляемых типов упрощает сгенерированный код, поскольку он содержит имена значений, а не целых чисел.