Данные о активном состоянии могут упростить проект некоторых Stateflow® графики, поскольку вы не должны вести данные, которые сильно коррелированы с иерархией графика. Когда вы активируете данные о активном состоянии, Stateflow сообщает о деятельности о состоянии через порт выхода в Simulink® или как локальные данные на графике. Используя данные о активном состоянии, можно:
Избегайте ручных обновлений данных, отражающих активность графика.
Просмотрите график активность с помощью возможностей, Данные моделирования Inspector или Logic Analyzer.
Журнал активности графика для диагностики.
Управляйте другими подсистемами Simulink.
Когда вы включаете активные данные о состоянии, Stateflow создает логический или перечисленный объект данных, соответствующий типу действия.
Тип действия | Тип данных активного состояния | Описание |
---|---|---|
Самодеятельность | Булев | Состояние активно? |
Дочерняя деятельность | Перечисление | Какой ребенок активен? |
Деятельность в состоянии листа | Перечисление | Какое состояние листа активно? |
Для собственной активности графика или состояния, значение данных true
когда активен и false
когда неактивен. Для деятельности дочернего и листового состояний данные являются перечисленным типом. Stateflow может задать класс перечисления или можно создать определение вручную. Для получения дополнительной информации смотрите Задать перечисляемый тип действий состояния.
Можно включить активные данные о состоянии для диаграммы Stateflow, состояния, таблицы переходов состояний или атомарной субдиаграммы. В этой таблице перечислены типы действий, поддерживаемые каждым видом объекта Stateflow.
Объект Stateflow | Самодеятельность | Дочерняя деятельность | Активность состояния листа |
---|---|---|---|
Чарты | Не поддерживается | Поддержанный | Поддержанный |
Состояния с исключительным (OR) разложением | Поддержанный | Поддержанный | Поддержанный |
Состояния с параллельным (И) разложением | Поддержанный | Не поддерживается | Не поддерживается |
Атомарные субдиаграммы | Поддерживается на уровне контейнера | Поддерживается внутри субдиаграммы | Поддерживается внутри субдиаграммы |
Таблицы переходов состояний | Не поддерживается | Поддержанный | Поддержанный |
Активные данные о состоянии можно включить в Property Inspector или в Model Explorer.
Property Inspector
Чтобы открыть Property Inspector, на вкладке Modeling, нажмите Property Inspector.
На Редактора Stateflow холсте выберите объект Stateflow для мониторинга.
В Monitoring разделе Property Inspector установите флажок Create output for monitoring и отредактируйте свойства активных данных о состоянии.
Model Explorer
Чтобы открыть Model Explorer, на вкладке Modeling, нажмите Model Explorer.
На панели Model Hierarchy дважды щелкните объект Stateflow, который нужно контролировать.
На панели объектов Stateflow установите флажок Create output for monitoring и измените свойства данных о активном состоянии.
Тип активности состояния для мониторинга. Выберите из следующих опций:
Self activity
Child activity
Leaf state activity
Имя объекта данных активного состояния. Для получения дополнительной информации см. Инструкции по присвоению имен объектам Stateflow.
Имя перечисляемого типа данных для объекта данных активного состояния. Это свойство применяется только к действию дочернего и листового состояний.
Определяет, задан ли тип перечисленных данных вручную. Это свойство применяется только к действию дочернего и листового состояний. Для получения дополнительной информации смотрите Задать перечисляемый тип действий состояния.
По умолчанию данные о активном состоянии имеют возможности Output
. Stateflow создает порт выхода на блоке графика в модели Simulink.
Чтобы получить доступ к данным об активном состоянии внутри диаграммы Stateflow, измените возможности на Local
на панели «Символы» или в Model Explorer. Для получения дополнительной информации смотрите Задать свойства данных.
Можно задать информацию для генерации кода путем привязки данных о локальном активном состоянии к Simulink.Signal
(Simulink) объект. Измените свойства объекта через CoderInfo
свойство. Для получения дополнительной информации смотрите Simulink.CoderInfo
(Simulink).
По умолчанию Stateflow определяет тип данных перечисления для дочерней и листовой активности. Если установлен флажок Define enumerated type manually, и определение типов перечисления не существует, то Stateflow предоставляет ссылку для создания определения. При нажатии на ссылку Create enum definition from template создается настраиваемое определение.
Определение типов перечисления содержит по одному перечисленному значению для каждого имени состояния. Определение также содержит перечисленное значение, которое служит значением по умолчанию для типа данных перечисления и указывает, что никакое подсостояние не активно. Для примера в модели sf_car
, состояние gear_state
содержит четыре дочерних состояния, которые соответствуют передачам в автомобиле: first
, second
, third
, fourth
. Модель задает тип данных дочернего действия с этим определением класса перечисления:
classdef gearType < Simulink.IntEnumType enumeration None(0), first(1), second(2), third(3), fourth(4) end ... end
Вы можете настроить это определение, переупорядочив перечисленные значения или переименовав значение по умолчанию. Не переименовывайте перечисленные значения, которые соответствуют состояниям, или используйте getDefaultValue
метод для задания другого значения по умолчанию. Для получения дополнительной информации см. раздел «Определение перечисленных типов данных».
Совет
Базовый тип хранилища для автоматически созданных перечислений по умолчанию равен Native Integer
. Для меньшего объема памяти в панели Optimization диалогового окна Параметры конфигурации измените значение поля Base storage type for automatically created enumerations. Для получения дополнительной информации смотрите Базовый тип памяти для автоматически созданных перечислений (Simulink Coder).
В состояниях с параллельным (И) разложением дочерняя активность и активность состояния листа недоступны, потому что параллельные подсостояния активны одновременно.
Когда вы активируете активность состояния листа в графике или состоянии, подсостояние с параллельным (И) разложением рассматривается как состояние листа. Например, предположим, что вы активируете действие состояния листа для этого графика. Потому что состояние B
имеет параллельное разложение, его подсостояния B1
и B2
одновременно активны, так что B
рассматривается как состояние листа графика.
Во время симуляции возможности, соединенная с выходными данными активного состояния, показывают перечисленные значения для состояний листа A1
, A2
, и B
.
Включение выхода дочерней активности для состояний, у которых нет дочерних элементов, приводит к ошибке во время компиляции и запуска.
Вы не можете включить активность дочернего или листового состояния в графиках или состояниях с параллельным разложением. Чтобы проверить активность состояний в подсостояниях параллельных состояний, используйте in
оператор. Для получения дополнительной информации смотрите Проверяйте активность состояния при помощи оператора in.
Активные данные о состоянии не поддерживаются в графиках, которые используют классическую или семантику Мили, когда Initialize outputs every time chart wakes up свойства графика включена. Для получения дополнительной информации смотрите Инициализация выходов каждый раз, когда график просыпается.
Simulink.CoderInfo
(Simulink) | Simulink.Signal
(Simulink)