exponenta event banner

Мониторинг активности диаграммы с помощью данных активного состояния

Если диаграмма 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 или в виде локальных данных в диаграмму. В этой таблице перечислены различные режимы доступных данных активного состояния.

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

Для включения данных активного состояния используйте инспектор свойств.

  1. Установите флажок Создать выходные данные для мониторинга.

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

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

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

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

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

В этом примере данные активного состояния используются для моделирования системы контроллера для пары светофоров.

В диаграмме «Контроллер трафика» две параллельные подсхемы управляют логикой управления светофорами. Подчасти имеют идентичную иерархию, состоящую из трех дочерних состояний: 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, указывая на то, что другой светофор может безопасно зеленеть. Цикл светофора начинается снова.

Хронометраж светофоров

Хронометраж светофора определяется несколькими параметрами. Чтобы изменить значения этих параметров, дважды щелкните диаграмму контроллера трафика и введите новые значения в диалоговом окне «Параметры блока».

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

Изучение примера

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

    • 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.

  • 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 секунд.

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

Подробнее