Изменение активных значений и времени активации параметров варианта

В этом примере показано, как изменить активные значения и время активации параметров варианта в модели Simulink ®.

В этом примере вы научитесь:

  • Измените активные значения параметров варианта с помощью выражений условий варианта.

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

Обзор параметров вариантов

Параметры варианта могут иметь несколько значений. Каждое значение параметра варианта связано с выражением управления варианта. Во время симуляции значение параметра варианта связано с условием, которое вычисляется как true - активное значение параметра варианта. Значение, сопоставленное с условием, которое вычисляется как false - неактивное значение параметра. Чтобы переключиться между активными значениями, измените значение переменной управления вариантом. Для получения дополнительной информации смотрите Использование параметров варианта для повторного использования параметров блоков с различными значениями.

Необходимое условие

Прежде чем вы начнете с этого примера, мы рекомендуем вам завершить Создание Модели Простого Варианта Параметра.

Исследуйте модель

1. Откройте модель.

open_system([matlabroot '/examples/simulink_variants/main/slexVariantParameters'])

В этой модели параметр Gain блоков Gain является параметрами варианта, которые заданы как Simulink.VariantVariable объекты K1 и K2. Объекты определены в slexVariantParameterData.m файл.

2. Откройте slexVariantParameterData.m файл. Файл загружается в коллбэк PostLoadFcn из моделирование > Model Settings > Свойства.

В файле объекты K1 и K2 иметь несколько значений, связанных с выражениями управления вариантом V==1 и V==2. В дополнение к значению можно задать атрибуты, такие как размерность, тип данных и так далее для каждого объекта, используя параметр 'Specification' объекта.

  • Переменная управления вариантом: Значение Simulink.VariantControl V объекта определяет, какие значения K1 и K2 активны во время симуляции. Если V==1 вычисляет, чтобы true, значения, связанные с V==1 стать активным, и все значения, связанные с V==2 стать неактивным. Активное значение K1 присваивается параметру Gain блока Gain1, а активное значение K2 присваивается параметру Gain блока Gain2. Точно так же, когда V==2 вычисляет, чтобы true, все значения, связанные с V==1 стать неактивным, и все значения, связанные с V==2 стать активным. Для получения дополнительной информации об элементах управления вариантом смотрите Элементы управления вариантом в параметрах варианта.

  • Различное время активации: различное время активации определяет, устанавливает ли Simulink активное значение различной Выгоды параметра во время диаграммы обновления, или во время кода собирают. Время активации также определяет, должен ли сгенерированный код содержать только активные значения или как активные, так и неактивные значения K1 и K2.

В этом примере значение V задается как 1, и время активации варианта задается как update diagram. Когда вы симулируете эту модель, V==1 вычисляет, чтобы true. Значение K1 установлено в 3.5 и значение K2 установлено в 4.5. Simulink определяет активные значения во время схемы обновления. Когда вы генерируете код из этой модели, код содержит только активные значения K1 и K2.

Установите активный выбор параметров варианта

Значение переменной управления вариантом определяет активное значение параметров варианта во время симуляции. Чтобы переключить активные значения, измените значение переменной управления вариантом.

1. На панели инструментов Simulink нажмите Запуск. Во время симуляции V==1 вычисляет, чтобы true. Как значения 3.5 и 4.5 связаны с V==1, эти значения присвоены K1 и K2, соответственно. Впоследствии значения присваиваются параметрам Gain блоков Gain.

2. Чтобы изменить значение параметров Gain, измените значение V на 2, затем снова симулируйте модель.

V.Value = 2;

Во время симуляции все значения, связанные с V==2 назначены K1 и K2. Впоследствии значения присваиваются параметрам Gain блоков Gain.

Установите время для определения активного значения параметров варианта

Время активации варианта определяет, когда Simulink выбирает активное значение параметров варианта. Время активации также определяет, должен ли сгенерированный код содержать только активные значения или оба параметров варианта активных и неактивных значений. Для получения дополнительной информации смотрите 'ActivationTime'.

Время активации можно задать следующим образом:

  • update diagram: Для определения времени активации V как update diagramвведите эту команду в Командное окно MATLAB ®. Затем снова симулируйте модель.

V.ActivationTime = 'update diagram';

Simulink устанавливает активные значения K1 и K2 во время обновления схемы перед распространением атрибутов сигнала. Атрибуты сигнала, такие как размерности и тип данных, не анализируются на согласованность в модели. Сгенерированный код содержит только активное значение K1 и K2.

  • update diagram analyze all choices: Для определения времени активации V как update diagram analyze all choicesвведите эту команду в Командном Окне MATLAB. Затем снова симулируйте модель.

V.ActivationTime = 'update diagram analyze all choices';

Simulink устанавливает активные значения K1 и K2 во время обновления схемы после распространения атрибутов сигнала. Атрибуты сигнала распространяются как на активные, так и на неактивные значения. Атрибуты сигнала, такие как размерности и тип данных, анализируются на согласованность по всей модели. Сгенерированный код содержит только активное значение K1 и K2.

  • code compile: Для определения времени активации V как code compileвведите эту команду в Командном Окне MATLAB. Затем снова симулируйте модель.

V.ActivationTime = 'code compile';

Simulink устанавливает активный выбор во время компиляции кода. Атрибуты сигнала распространяются как на активные, так и на неактивные значения. Атрибуты сигнала, такие как размерности и тип данных, анализируются на согласованность по всей модели. Сгенерированный код содержит как активные, так и неактивные значения K1 и K2. Значения заключаются в предварительные условия процессора #if и #elif.

См. также