С помощью вариационных переходов можно создавать диаграммы Stateflow ® в моделях Simulink ®, генерирующие код, который может использоваться в различных программных ситуациях. Вариативные переходы позволяют моделировать полное подмножество вариантов в пределах одной диаграммы Stateflow, чтобы можно было выбрать нужный вариант при создании кода или при компиляции созданного кода.
Вариативные переходы охраняются параметрами Simulink или переменными MATLAB ® в условии и соединяют состояния в диаграмме, которые являются вариациями из конфигурации базовой диаграммы. Условия перехода вариантов оцениваются во время компиляции кода или генерации кода, а не во время выполнения. Кроме того, сгенерированный код содержит только элементы данных, необходимые для выполнения выбранной конфигурации программного обеспечения.
Вариации диаграммы поддерживаются только при создании кода. Диаграммы потока состояний, разрабатываемые с помощью вариационных переходов, моделируются в соответствии с тем, какая часть диаграммы активна.
Вариативные переходы нельзя использовать в сочетании с действиями над путями перехода по умолчанию состояния или диаграммы.
Вариативные переходы связывают конфигурации вариантов с основной диаграммой Stateflow. Конфигурации вариантов активны только в том случае, если условие перехода вариантов истинно.
В этом примере конфигурации вариантов добавляются в базовую систему управления, которая включает и выключает лампу. Конфигурации вариантов позволяют затухать лампе несколькими способами. После добавления конфигураций вариантов в диаграмму Stateflow можно выбрать создание кода для любой конфигурации.
Первоначально диаграмма Stateflow включает два состояния: Off и On. Свет включается, когда событие, SWITCH_ON, отправляется в диаграмму. Свет выключается, когда событие, SWITCH_OFF, отправляется в диаграмму.

Некоторые из ламп имеют возможность быть затемненными. Внутри этого подмножества есть лампы, которые могут быть установлены высокими или низкими, и лампы, которые могут быть только высокими, средними или низкими. Чтобы добавить эти возможности в диаграмму Stateflow, добавьте три варианта: Dimmer1, Dimmer2, и NoDimmer. Dimmer1 имеет три подстанции, High, Medium, и Low. Dimmer2 имеет два подсостояния, High и Low.

Вход в конфигурации исполнения охраняется условием перехода, в котором используется параметр Simulink или переменная MATLAB, определенная в базовой рабочей области. Чтобы изменить переход на вариант, щелкните переход. На вкладке Переход выберите Вариант Переход. Переход появляется на диаграмме с символом #, который указывает, что переход является вариационным переходом.

В этом примере конфигурации вариантов охраняются условием с параметром Simulink. В этом случае HAS_DIMMER1 является объектом параметра. Для активизации конфигурации варианта условие [HAS_DIMMER1 == 1] должно быть истинно. Дополнительные сведения о параметрах Simulink см. в разделе Установка значений параметров блока (Simulink).
Во время моделирования диаграмма Stateflow выполняет только активную часть диаграммы Stateflow. Неактивная часть отображается на холсте Stateflow серым цветом. Чтобы изменить, какая часть диаграммы активна в данный момент, обновите параметр защиты в основной рабочей области.
Для создания кода из диаграммы Stateflow необходимо использовать Simulink Coder™ или Embedded Coder ®. По умолчанию созданный код содержит только активный конечный автомат варианта .
При использовании встроенного кодера можно включить условную инструкцию препроцессора в созданный код. В редакторе потока состояний на вкладке «Моделирование» в разделе «Данные проекта» выберите «Инспектор свойств». В разделе Дополнительно выберите Генерировать условия препроцессора.

Дополнительные сведения о создании кода см. в разделах Создание кода с помощью Simulink ® Coder™ (Simulink Coder) и Создание кода с помощью встроенного кодера ® (Embedded Coder).
Диспетчер исполнений - это центральный инструмент, позволяющий управлять конфигурациями исполнений в системной модели. В редакторе потока состояний на вкладке Моделирование (Modeling) в разделе Данные конструкции (Design Data) выберите Диспетчер исполнения (Variant Manager).

Дополнительные сведения о Диспетчере исполнения см. в разделе Обзор диспетчера исполнения (Simulink).