exponenta event banner

Введение в элементы управления исполнениями

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

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

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

Элемент управления исполнениями - это логическое выражение, которое активирует конкретный вариант при вычислении true.

Примечание

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

Можно указать элементы управления исполнения как Simulink.Variant объекты, выражения MATLAB (включая структуры) или как выражения, содержащие один или несколько из этих операндов и операторов.

Режим управления вариантами

Параметр режима управления вариантами, доступный в диалоговом окне параметров блока, позволяет выбрать Expression или Label или sim codegen switching режим моделирования блоков исполнения.

  • Expression: Указывает активный вариант на основе оценки условий варианта.

    Режим управления исполнениями: Выражение

  • Label: Задает элементы управления Variant на основе имени (активный выбор режима метки). В Label в режиме Элемент управления исполнениями (Variant control) не требуется создавать в глобальной рабочей области. Можно также выбрать активный вариант режима метки в командной строке. Например, set_param(block,'LabelModeActiveChoice', 'Choice_1').

    Режим управления вариантами: Метка

  • sim codegen switching: обеспечивает автоматическое переключение вариантов для процессов моделирования и создания кода в блоках вариантов. Эта функция удобна для переключения между режимами моделирования и генерации кода.

    При моделировании модели (Normal, Accelerator, Rapid Accelerator) Simulink автоматически выбирает sim ветвь как активный выбор. Аналогично, при моделировании ПО в цикле (SIL), моделировании процессора в цикле (PIL) или создании кода или использовании внешнего режима Simulink автоматически выбирает codegen филиал.

    Примечание

    Если для блока исполнения установлен режим управления «Вариант» label или expression, затем с использованием sim или codegen для его условия выбора не поддерживается.

    Режим управления вариантами: переключение sim-кодегена

    Примечание

    В выпадающем списке Время активации варианта можно выбрать update diagram или update diagram analyze all choices. Для сигналов данных, update diagram analyze all choices обеспечивает согласованность атрибутов сигнала (типов данных, размеров и т.д.) между обоими вариантами.

    Вот пример экрана, на котором показан блок вариантов, переключенный на sim choice.

    Example model: sim choice

Операнды

  • Имена переменных, которые разрешаются переменными MATLAB или Simulink.Parameter объекты с целым или перечисленным типом данных и значениями скалярного литерала

  • Имена переменных, которые разрешаются в Simulink.Variant объекты

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

Операторы

  • Скобки для группировки

  • Арифметические, реляционные, логические или побитовые операторы

Дополнительные сведения см. в разделе Операторы и операнды в выражениях условий исполнения.

При компиляции модели Simulink определяет, что вариант является активным, если его элемент управления исполнениями имеет значение true. Оценка активного варианта происходит на ранних стадиях компиляции, и активный вариант не может быть изменен после компиляции модели.

Известные ограничения

  • Симуляция объектов вариантов внутри структур не допускается.

  • Параметры симулятора внутри структур не допускаются.

  • Все переменные управления вариантами в блоке должны исходить из одного источника.

Подходы к определению элементов управления исполнениями

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

СпецификацияЦельПример
Скалярная переменнаяБыстрое создание прототиповA == 1
Simulink.Variant объектПовторное использование условий вариантовLinearController = Simulink.Variant('FUEL==2 && EMIS==1');
Simulink.Parameter переменные объекта или MATLABСоздание условий препроцессора для генерации кодаmode == 1, где mode может быть Simulink.Parameter переменные объекта или MATLAB
Перечисляемый типУлучшена читаемость кода, поскольку значения условий представлены как значимые имена вместо целых чиселLEVEL == Level.Advanced

Управляющие переменные можно найти с помощью функции Simulink.VariantManager.findVariantControlVars.

Скалярные переменные для быстрого прототипирования

Скалярные переменные MATLAB позволяют быстро создавать прототипы вариантов при построении модели. Они помогают сосредоточиться больше на построении вариантов, чем на разработке выражений, которые активируют эти варианты.

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

Элементы управления исполнениями в простейшей форме можно задать в качестве скалярных переменных в диалоговом окне параметров блока «Подсистема исполнений».

Поле Условие для обоих Linear Controller и Nonlinear Controller являются N/A, потому что вариант управления сам по себе является условием.

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

V = 1;
Это условие активирует Linear Controller выбор варианта. Элементы управления исполнениями игнорируются, когда % используется символ. Аналогично, если элемент управления исполнения пуст, выбор игнорируется.

Аналогично, при изменении значения V кому 2, Simulink активирует Nonlinear Controller выбор варианта.

Simulink.Variant Объекты для повторного использования условия исполнения

После определения вариантов, необходимых модели, можно создать сложные условия исполнения для управления активацией вариантов. Определение условий исполнения как Simulink.Variant объекты.

Simulink.Variant объекты позволяют повторно использовать общие условия исполнения в моделях и помогают инкапсулировать сложные выражения условий исполнения.

Рассмотрим пример, в котором элементы управления исполнениями уже определены в глобальной рабочей области.

V=1;
V=2;

Эти элементы управления можно преобразовать в выражения условий, инкапсулированные как Simulink.Variant объекты.

LinearController=Simulink.Variant('V==1');
NonLinearController=Simulink.Variant('V==2');

Затем можно указать эти Simulink.Variant объекты в качестве элементов управления исполнениями в диалоговом окне параметров блока «Подсистема исполнений».

Поле Условие теперь отражает инкапсулированное условие исполнения. С помощью этого подхода можно разработать сложные выражения условия исполнения, которые можно использовать повторно.

Simulink.Parameter Объекты или переменные MATLAB для создания кода

Если предполагается создать код для модели, содержащей варианты, укажите переменные управления вариантами как переменные MATLAB или Simulink.Parameter объекты. 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 или ImportedDefine с указанным заголовочным файлом

  • CompilerFlag

  • SystemConstant (AUTOSAR)

  • Собственный класс хранения, определяющий данные как макрос

Можно также преобразовать переменную управления скалярным вариантом в Simulink.Parameter объект. См. раздел Преобразование переменных управления исполнениями в объекты Simulink.Parameter.

Перечислимые типы для улучшения читаемости кода

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

  1. В редакторе MATLAB определите классы, которые сопоставляют перечисляемые значения значимым именам.

    classdef sldemo_mrv_CONTROLLER_TYPE < Simulink.IntEnumType
            enumeration
            NONLINEAR (1)
            SECOND_ORDER (2)
            end
    end
    
  2. Определить Simulink.Variant объекты для этих классов в глобальной рабочей области.

    VE_NONLINEAR_CONTROLLER = Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.NONLINEAR')
    VE_SECOND_ORDER_CONTROLLER =Simulink.Variant...
    ('E_CTRL==sldemo_mrv_CONTROLLER_TYPE.SECOND_ORDER')
    VE_PROTOTYPE =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PROTOTYPE')
    VE_PRODUCTION =Simulink.Variant...
    ('E_CURRENT_BUILD==sldemo_mrv_BUILD_TYPE.PRODUCTION')

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

Просмотр условий исполнения

Легенда условия исполнения помогает визуализировать условия исполнения, связанные с моделью. Для просмотра легенды условий исполнения на вкладке Отладка выберите Информационные наложения > Легенда исполнения.

Примечание

Если «Легенда исполнения» недоступна, на вкладке «Отладка» выберите «Информационные наложения» > «Условия исполнения».

По умолчанию легенда условия исполнения отображает аннотацию условия исполнения, условие исполнения во время моделирования и источник переменных условия исполнения. Для просмотра условия исполнения в сгенерированном коде выберите опцию Показать условия сгенерированного кода в окне Легенда условия исполнения.

В легенде условий исполнения условия исполнения в блоках аннотируются как v:c, где v - вариант семантического индикатора и c представляет индекс условия варианта. Чтобы узнать, каким частям модели соответствует условие, можно щелкнуть аннотации исполнения с гиперссылками.

При наведении курсора на блок, имеющий условие исполнения, всплывающая подсказка отображает аннотацию исполнения и связанное условие исполнения для блока. Для просмотра подсказки аннотации условия исполнения необходимо выбрать опцию Условие исполнения (Variant Condition).

В легенде также отображается источник переменных условия варианта. Переменные могут создаваться из маски, модели или базового рабочего пространства. Все переменные, используемые в блоке, должны исходить из одного источника. В модели переменные, происходящие из различных рабочих областей-масок, могут иметь одно и то же имя и различные значения. Чтобы просмотреть источник переменных, щелкните гиперссылку рабочих пространств.

Примечание

Параметр Variant activation time имеет значение update diagramисточник переменных, отображаемых для неактивных вариантов, может быть неверным, поскольку неактивные варианты удаляются до распространения атрибутов сигнала и поэтому не оцениваются.

Для просмотра легенды условия исполнения программным способом используйте Simulink.VariantManager.VariantLegend в окне команд MATLAB.

Операторы и операнды в выражениях условия исполнения

Simulink оценивает выражения условий в элементах управления исполнениями, чтобы определить активный вариант. В выражение условия можно включить следующие операнды:

  • Скалярные переменные

  • Simulink.Parameter объекты, которые не являются структурами и имеют типы данных, отличные от Simulink.Bus объекты

  • Перечислимые типы

  • Скобки для группировки

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

Выражения MATLAB, поддерживающие генерацию условий препроцессораЭквивалентное выражение в условном препроцессоре C
Арифметика
  • A + B

  • +A

  • A + B

  • A

  • A - B

  • -A

  • A - B

  • -A

A * BA * B
idivide(A,B)

A / B

Если значение второго операнда (Bявляется 0, поведение не определено.

rem(A,B)

A % B

Если значение второго операнда (Bявляется 0, поведение не определено.

Относительный

A == B

A == B

A ~= B

A != B

A < B

A < B

A > B

A > B

A <= B

A <= B

A >= B

A >= B
Логичный
~A!A, где A не является целым числом
A && BA && B
A || BA || B
Побитовый (A и B оба не могут быть постоянными целочисленными литералами)

bitand(A,B)

A & B

bitor(A,B)

A | B

bitxor(A,B)

A ^ B

bitcmp(A)

~A

bitshift(A,x)

A << x

bitshift(A,-x)

A >> x

Условие варианта нетто

Условие варианта нетто представляет собой сумму локального условия и его родового условия.

Рассмотрим эту модель slex_netvariant с двумя блоками источника вариантов с одним входом и одним выходом (SISO), Variant Source и Variant Source1 с условиями исполнения как V==1 и W==1соответственно.

При моделировании этой модели Variant Source1 блок и другие блоки в блоке подсистемы будут иметь локальное состояние W==1 распространяется из Variant Source1 блок. Предковое состояние V==1 распространяется из Variant Source блок на блок подсистемы. Следовательно, условие варианта нетто в Variant Source1 блок и другие блоки в блоке подсистемы будут V==1 && W==1.

Связанные примеры

Подробнее