Отслеживайте активность состояния через данные активного состояния

Данные о активном состоянии могут упростить проект некоторых Stateflow® графики, поскольку вы не должны вести данные, которые сильно коррелированы с иерархией графика. Когда вы активируете данные о активном состоянии, Stateflow сообщает о деятельности о состоянии через порт выхода в Simulink® или как локальные данные на графике. Используя данные о активном состоянии, можно:

  • Избегайте ручных обновлений данных, отражающих активность графика.

  • Просмотрите график активность с помощью возможностей, Данные моделирования Inspector или Logic Analyzer.

  • Журнал активности графика для диагностики.

  • Управляйте другими подсистемами Simulink.

Типы данных о активном состоянии

Когда вы включаете активные данные о состоянии, Stateflow создает логический или перечисленный объект данных, соответствующий типу действия.

Тип действияТип данных активного состоянияОписание
СамодеятельностьБулевСостояние активно?
Дочерняя деятельностьПеречислениеКакой ребенок активен?
Деятельность в состоянии листаПеречислениеКакое состояние листа активно?

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

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

Объект StateflowСамодеятельность Дочерняя деятельностьАктивность состояния листа
Чарты Не поддерживаетсяПоддержанныйПоддержанный
Состояния с исключительным (OR) разложениемПоддержанныйПоддержанныйПоддержанный
Состояния с параллельным (И) разложениемПоддержанныйНе поддерживаетсяНе поддерживается
Атомарные субдиаграммыПоддерживается на уровне контейнераПоддерживается внутри субдиаграммыПоддерживается внутри субдиаграммы
Таблицы переходов состоянийНе поддерживаетсяПоддержанныйПоддержанный

Включите данные активного состояния

Активные данные о состоянии можно включить в Property Inspector или в Model Explorer.

  • Property Inspector

    1. Чтобы открыть Property Inspector, на вкладке Modeling, нажмите Property Inspector.

    2. На Редактора Stateflow холсте выберите объект Stateflow для мониторинга.

    3. В Monitoring разделе Property Inspector установите флажок Create output for monitoring и отредактируйте свойства активных данных о состоянии.

  • Model Explorer

    1. Чтобы открыть Model Explorer, на вкладке Modeling, нажмите Model Explorer.

    2. На панели Model Hierarchy дважды щелкните объект Stateflow, который нужно контролировать.

    3. На панели объектов 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) | (Simulink)

Похожие темы