Контролируйте действие графика при помощи активных данных состояния

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

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

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

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

  • Экспортируйте данные о действии графика в другие блоки 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 соответствуйте активным дочерним состояниям в субдиаграммах. Эти сигналы:

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

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

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

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

Поведение субдиаграмм диспетчера

Каждый диспетчер циклы через его дочерние состояния, от 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 и введите новые значения в диалоговое окно Block Parameters.

ПараметрЗадайте значениеОписание
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. В Инспекторе Данных моделирования отобразите регистрируемые сигналы в отдельных осях. Булевская переменная сигнализирует о greenLightRequested и greenLightLocked появитесь как числовые значения нуля или один. Действие состояния сигнализирует о Light1 и Light2 показываются перечислимыми данными со значениями Green, Yellow, Red, и None.

Simulation Data Inspector showing the output of the chart.

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

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

Еще после 6 секунд (REDDELAY):

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

  • Световой сигнал 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), Световой сигнал 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), Световой сигнал 2 запрашивает зеленый свет установкой greenLightRequested = true.

GreenRedtruetrue

Повторения цикла до симуляции заканчиваются в t = 1 000 секунд.

Связанные примеры

Больше о