Отслеживайте активность графика при помощи данных об активном состоянии

Если ваш Stateflow® график включает данные, которые сильно коррелируют с иерархией графика, можно упростить проект с помощью данных о активном состоянии. Включив данные о активном состоянии, можно:

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

  • Регистрируйте и контролируйте график активность в Данные моделирования Inspector.

  • Используйте данные о деятельности графика для управления другими подсистемами.

  • Экспорт данных о деятельности графика в другой Simulink® блоки.

Для получения дополнительной информации смотрите Создание иерархии для управления сложностью системы.

Данные о активном состоянии

Использование активных данных о выходе может упростить проект некоторых диаграмм Stateflow. Для примера в этой модели сигнала трафика состояние, которое активно, определяет значение символа color. Когда вы активируете данные о активном состоянии, Stateflow может предоставить цвет сигнала трафика путем отслеживания активности состояния. Явное обновление color больше не требуется, поэтому можно удалить этот символ и упростить проект графика.

Chart modeling a traffic signal, with states called Red, Yellow, and Green. The value of the symbol color indicates which state is active.

Stateflow предоставляет данные о активном состоянии через порт выхода в Simulink или как локальные данные в ваш график. В этой таблице перечислены различные доступные режимы данных о активном состоянии.

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

Чтобы включить активные данные о состоянии, используйте Property Inspector.

  1. Установите флажок Create output for monitoring.

  2. Выберите режим действия из раскрывающегося списка.

  3. Введите Data name для символа данных о активном состоянии.

  4. (Необязательно) Для действий в состоянии дочернего элемента или листа введите Enum name для типа данных активного состояния.

По умолчанию Stateflow сообщает об активности состояния как о выходных данных. Чтобы изменить возможности символа данных активного состояния на локальные данные, используйте панель «Символы».

Пример данных о активном состоянии

Этот пример использует данные о активном состоянии, чтобы смоделировать систему контроллера для пары светофоров.

Внутри графика Контроллер две параллельные субдиаграммы управляют логикой, управляющей светофорами. Субдиаграммы имеют идентичную иерархию, состоящую из трех дочерних состояний: Red, Yellow, и Green. Данные о выход Light1 и Light2 соответствуют активным дочерним состояниям в субдиаграммах. Эти сигналы:

  • Определите фазу анимированных светофоров.

  • Способствуйте количеству автомобилей, ожидающих на каждом свете.

  • Управляйте подсистемой Safety Assertion, проверяющей, что два светофора никогда не являются одновременно зелеными.

Чтобы увидеть субдиаграммы в графике Контроллера трафика, щелкните стреле в нижнем левом углу графика.

Поведение субдиаграмм контроллера трафика

Каждый контроллер трафика переходит через свои дочерние состояния, от Red на Green на Yellow и назад к Red. Каждое состояние соответствует фазе в цикле светофора. Сигналы выхода Light1 и Light2 указать, какое состояние активно в любой момент времени.

Chart modeling a traffic signal. The chart uses active state data to indicate which state is active.

Красный свет

Когда Red состояние становится активным, начинается цикл светофора. После короткой задержки контроллер проверяет наличие автомобилей, ожидающих на перекрестке. Если он обнаруживает хотя бы один автомобиль, или если истекает фиксированный промежуток времени, то контроллер запрашивает зеленый свет путем установки greenLightRequest на true. После выполнения запроса контроллер остается в Red состояние в течение короткого периода времени, пока оно не обнаруживает, что другой сигнал трафика является красным. Затем контроллер выполняет переход к Green.

Зеленый свет

Когда Green состояние становится активным, контроллер отменяет свой запрос зеленого света путем установки greenLightRequest на false. Контроллер устанавливает greenLightLocked на true, препятствуя тому, чтобы другой сигнал трафика становился зеленым. Через некоторое время контроллер проверяет наличие запроса зеленого света от другого контроллера. Если он получает запрос, или если истекает фиксированный промежуток времени, то контроллер переходит к Yellow состояние.

Желтый Свет

Перед переходом на Red состояние, контроллер остается в Yellow состояние в течение фиксированного количества времени. Когда Yellow состояние становится неактивным, устанавливает контроллер greenLightLocked на false, что указывает на то, что другой светофор может безопасно стать зеленым. Затем снова начинается цикл светофора.

Синхронизация светофоров

Несколько параметров определяют время цикла светофора. Чтобы изменить значения этих параметров, дважды кликните Traffic Controller график и введите новые значения в диалоговом окне Параметров блоков.

ПараметрПредустановленное значениеОписание
REDDELAY6 секундПродолжительность времени до начала проверки контроллером автомобилей на перекрестке. Кроме того, минимальная продолжительность времени до того, как светофор может стать зеленым после того, как контроллер запросит зеленый свет.
MAXREDDELAY360 секундМаксимальное время проверки контроллером автомобилей перед запросом зеленого света.
GREENDELAY180 секундМаксимальное время, в течение которого светофор остается зеленым.
MINGREENDELAY120 секундМинимальный промежуток времени, в течение которого светофор остается зеленым.
YELLOWDELAY15 секундПродолжительность времени, в течение которого светофор остается желтым.

Исследуйте пример

  1. Включите ведение журнала для каждого из этих символов. На панели «Символы» выберите каждый символ. В Property Inspector в разделе Logging выберите Log signal data.

    • greenLightRequested

    • greenLightLocked

    • Light1

    • Light2

  2. На вкладке Simulation нажмите Run.

  3. На вкладке Simulation, под Review Results, нажмите Data Inspector.

  4. В Данные Моделирования Inspector отобразите записанные сигналы в отдельных осях. Логические сигналы greenLightRequested и greenLightLocked появляются как числовые значения нуля или единицы. Активность состояния сигнализирует Light1 и Light2 показаны в виде перечисленных данных со значениями Green, Yellow, Red, и None.

Simulation Data Inspector showing the output of the chart.

Чтобы проследить активность графика во время симуляции, можно использовать кнопки масштаба и курсора в Данные моделирования Inspector. Для примера в этой таблице подробно описывается активность в течение первых 300 секунд симуляции.

ВремяОписаниеLight 1Light2greenLightRequestedgreenLightLocked
t = 0В начале симуляции оба светофора красные.RedRedfalsefalse
t = 6Через 6 секунд (REDDELAY), на обеих улицах ждут машины. Оба светофора запрашивают зеленый свет путем установки greenLightRequested = true.RedRedtruefalse
t = 12

Еще через 6 секунд (REDDELAY):

  • Свет 1 становится зеленым, устанавливая greenLightLocked = true и greenLightRequested = false.

  • Light 2 запрашивает зеленый свет путем установки greenLightRequested = true.

GreenRedfalse, затем truetrue
t = 132

Через 120 секунд (MINGREENDELAY), свет 1 становится желтым.

YellowRedtruetrue
t = 147

Через 15 секунд (YELLOWDELAY):

  • Свет 1 становится красным, устанавливая greenLightLocked = false.

  • Свет 2 становится зеленым, устанавливая greenLightLocked = true и greenLightRequested = false.

RedGreenfalsefalse, затем true
t = 153

Через 6 секунд (REDDELAY), Light 1 запрашивает зеленый свет путем установки greenLightRequested = true.

RedGreentruetrue
t = 267

Свет 2 становится желтым 120 секунд (MINGREENDELAY) после озеленения.

RedYellowtruetrue
t = 282

Через 15 секунд (YELLOWDELAY):

  • Свет 2 становится красным, устанавливая greenLightLocked = false.

  • Свет 1 становится зеленым, устанавливая greenLightLocked = true и greenLightRequested = false.

GreenRedfalsefalse, затем true
t = 288

Через 6 секунд (REDDELAY), Light 2 запрашивает зеленый свет путем установки greenLightRequested = true.

GreenRedtruetrue

Цикл повторяется до тех пор, пока симуляция не закончится на уровне t = 1000 секунд.

Похожие примеры

Подробнее о