С вариантными переходами можно создать Stateflow® графики в Simulink® модели, которые генерируют код, который может использоваться в различных ситуациях программного обеспечения. Варианты переходов позволяют вам смоделировать полный подмножество изменений в пределах одной диаграммы Stateflow, так что вы можете выбрать, какое изменение вы хотите при генерации кода или при компиляции сгенерированного кода.
Варианты переходов охраняются параметрами Simulink или MATLAB® переменные в условии и соединяют состояния внутри графика, которые являются изменениями от строения основного графика. Варианты условий перехода оцениваются во время компиляции кода или генерации кода вместо во время выполнения. В дополнение к этому сгенерированный код содержит только представителей данных, необходимые для выполнения текущей выбранного строения программного обеспечения.
Изменения графика поддерживаются только при генерации кода. Диаграммы Stateflow, которые вы разрабатываете с вариантными переходами, моделируют, в соответствии с тем, какой фрагмент вашего графика является активной.
Варианты перехода не могут использоваться в сочетании с действиями на пути перехода по умолчанию состояния или графики.
Варианты перехода соединяют строения варианта с основной диаграммой Stateflow. Строения варианта активны только, когда условие перехода варианта верно.
В этом примере вы добавите строений варианта к основной системе управления, которая включает и отключает лампу. Вариант строений позволить лампе тусклеть несколькими способами. После добавления строений вариантов к диаграмме Stateflow можно выбрать генерацию кода для любого строения.
Первоначально ваша диаграмма Stateflow включает два состояния Off
и On
. Свет включается, когда событие, SWITCH_ON
, отправляется на график. Свет выключается, когда событие, SWITCH_OFF
, отправляется на график.
Некоторые из ламп имеют возможность быть затемненными. В этом подмножестве существуют лампы, которые могут быть установлены высоко или низко, и лампы, которые могут быть установлены только на высокое, среднее или низкое. Чтобы добавить эти возможности к диаграмме Stateflow, вы добавляете три изменений: Dimmer1
, Dimmer2
, и NoDimmer
. Dimmer1
имеет три подсостояний, High
, Medium
, и Low
. Dimmer2
имеет два подсостояний, High
и Low
.
Вход в строения варианта защищен условием перехода, которое использует параметр Simulink или переменный MATLAB, заданную в базовом рабочем пространстве. Чтобы изменить переход на вариант перехода, щелкните переход. На вкладке Transition выберите Variant Transition. Переход появляется на графике с символом #, который указывает, что переход является вариантом перехода.
В этом примере строения варианта защищены условием с параметром Simulink. В этом случае HAS_DIMMER1
является объектом параметра. В порядок, чтобы строение варианта было активной, условие [HAS_DIMMER1 == 1]
должно быть true. Для получения дополнительной информации о параметрах Simulink, смотрите Задать значения параметров блоков (Simulink).
Во время симуляции ваша диаграмма Stateflow выполняет только активный фрагмент вашей диаграммы Stateflow. Неактивный фрагмент выглядит серым на холсте Stateflow. Чтобы изменить фрагмент из графика, которая в данный момент является активной, обновите параметр защиты в базовом рабочем пространстве.
У вас должен быть Simulink Coder™ или Embedded Coder® чтобы сгенерировать код из диаграммы Stateflow. По умолчанию сгенерированный код содержит только активный конечный автомат варианта.
Если вы используете Embedded Coder, можно принять решение включить условный оператор препроцессора в свой сгенерированный код. В редакторе Stateflow на вкладке Modeling под Design Data выберите Property Inspector. В разделе Advanced выберите Generate preprocessor conditionals.
Для получения дополнительной информации о генерации кода смотрите Сгенерировать код Используя Simulink ® Coder™ (Simulink Coder) и Сгенерировать код используя Embedded Coder ® (Embedded Coder).
Диспетчер вариантов является центральным инструментом, который позволяет управлять строениями вариантов в вашей системной модели. В редакторе Stateflow на вкладке Modeling под Design Data выберите Variant Manager.
Для получения дополнительной информации об диспетчере вариантов см. Обзор менеджера вариантов (Simulink).