Различные средства управления в различных параметрах

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

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

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

Примечание

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

Можно задать различные средства управления как булевы выражения MATLAB или Simulink.Variant выражения определения объекта. Выражения могут содержать один или несколько из этих Операндов и Операторов.

Операнды

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

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

Операторы

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

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

A == B

A == B

A ~= B

A != B
Логический
~A!A, где A не целое число
A && BA && B
A || BA || 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 тип различных контрольных переменных в маске или рабочем пространстве модели не поддерживается. Для получения дополнительной информации о местах хранения для различных контрольных переменных смотрите Места хранения для Различных Контрольных переменных (Операнды) в Различных Выражениях условия.

  • 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.Parameter для генерации кода различных параметров

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

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