Если диаграмма Stateflow ® содержит данные, которые тесно связаны с иерархией диаграмм, можно упростить конструкцию с помощью данных активного состояния. Включив данные активного состояния, можно:
Избегайте обновления данных вручную, отражающих активность диаграммы.
Регистрируйте и отслеживайте активность диаграммы в инспекторе данных моделирования.
Используйте данные активности диаграммы для управления другими подсистемами.
Экспорт данных о деятельности диаграммы в другие блоки Simulink ®.
Дополнительные сведения см. в разделе Создание иерархии для управления сложностью системы.
Использование вывода данных активного состояния может упростить разработку некоторых диаграмм Stateflow. Например, в этой модели сигнала трафика активное состояние определяет значение символа. color. При включении данных активного состояния Stateflow может обеспечить цвет сигнала трафика путем отслеживания активности состояния. Явное обновление color больше не требуется, поэтому можно удалить этот символ и упростить дизайн диаграммы.

Stateflow предоставляет данные активного состояния через порт вывода в Simulink или в виде локальных данных в диаграмму. В этой таблице перечислены различные режимы доступных данных активного состояния.
| Режим активности | Тип данных | Описание |
|---|---|---|
| Самостоятельная деятельность | Булев | Активно ли государство? |
| Дочерняя активность | Перечисление | Какое дочернее состояние активно? |
| Активность состояния листа | Перечисление | Какое состояние листа активно? |
Для включения данных активного состояния используйте инспектор свойств.
Установите флажок Создать выходные данные для мониторинга.
Выберите режим действия из раскрывающегося списка.
Введите имя данных для символа данных активного состояния.
(Необязательно) Для действий дочернего или конечного состояния введите имя перечисления для типа данных активного состояния.
По умолчанию Stateflow сообщает об активности состояния в виде выходных данных. Чтобы изменить область символа данных активного состояния на локальные данные, используйте панель Символы (Symbols).
В этом примере данные активного состояния используются для моделирования системы контроллера для пары светофоров.

В диаграмме «Контроллер трафика» две параллельные подсхемы управляют логикой управления светофорами. Подчасти имеют идентичную иерархию, состоящую из трех дочерних состояний: Red, Yellow, и Green. Выходные данные Light1 и Light2 соответствуют активным дочерним состояниям в подчастях. Эти сигналы:
Определение фазы анимированных светофоров.
Внесите свой вклад в количество автомобилей, ожидающих на каждом огне.
Включите подсистему подтверждения безопасности, проверяющую, что оба светофора никогда не будут одновременно зелеными.
Чтобы просмотреть подшаблоны в диаграмме контроллера трафика, щелкните стрелку в левом нижнем углу диаграммы.
Каждый регулятор движения проходит через свои дочерние состояния, от Red кому Green кому Yellow и вернуться к Red. Каждое состояние соответствует фазе в цикле светофора. Выходные сигналы Light1 и Light2 укажите, какое состояние активно в любой данный момент времени.

Когда Red состояние становится активным, начинается цикл светофора. После небольшой задержки контролер проверяет ожидающие на перекрестке автомобили. Если он обнаруживает хотя бы один автомобиль или если проходит фиксированный промежуток времени, то контроллер запрашивает зеленый свет путем установки greenLightRequest кому true. После выполнения запроса контроллер остается в Red состояние в течение короткого периода времени до тех пор, пока оно не обнаружит, что другой сигнал трафика является красным. Затем контроллер выполняет переход к Green.
Когда Green состояние становится активным, контроллер отменяет свой запрос зеленого света путем установки greenLightRequest кому false. Наборы контроллеров greenLightLocked кому true, предотвращая зеленый цвет другого сигнала трафика. Через некоторое время контроллер проверяет запрос зеленого света от другого контроллера. Если он получает запрос или если проходит фиксированный промежуток времени, то контроллер переходит к Yellow состояние.
Перед переходом в Red состояние, контроллер остается в Yellow состояние на фиксированный промежуток времени. Когда Yellow состояние становится неактивным, контроллер устанавливает greenLightLocked кому false, указывая на то, что другой светофор может безопасно зеленеть. Цикл светофора начинается снова.
Хронометраж светофора определяется несколькими параметрами. Чтобы изменить значения этих параметров, дважды щелкните диаграмму контроллера трафика и введите новые значения в диалоговом окне «Параметры блока».
| Параметр | Предустановленное значение | Описание |
|---|---|---|
REDDELAY | 6 секунд | Промежуток времени до того, как контролер начнет проверять автомобили на перекрестке. Кроме того, минимальный промежуток времени до светофора может стать зеленым после того, как контроллер запросит зеленый свет. |
MAXREDDELAY | 360 секунд | Максимальный промежуток времени, который контроллер проверяет для автомобилей, прежде чем запросить зеленый свет. |
GREENDELAY | 180 секунд | Максимальный промежуток времени, в течение которого светофор остается зеленым. |
MINGREENDELAY | 120 секунд | Минимальный промежуток времени, в течение которого светофор остается зеленым. |
YELLOWDELAY | 15 секунд | Промежуток времени, в течение которого светофор остается желтым. |
Включите ведение журнала для каждого из этих символов. На панели «Символы» выберите каждый символ. В инспекторе свойств в разделе «Ведение журнала» выберите «Регистрировать данные сигнала».
greenLightRequested
greenLightLocked
Light1
Light2
На вкладке Моделирование (Simulation) щелкните Выполнить (Run).
![]()
На вкладке Моделирование (Simulation) в разделе Результаты проверки (Review Results) щелкните Инспектор данных (Data Inspector).
![]()
В инспекторе данных моделирования просмотрите записанные сигналы в отдельных осях. Логические сигналы greenLightRequested и greenLightLocked отображаются как числовые значения, равные нулю или единице. Сигналы активности состояния Light1 и Light2 показаны в виде перечислимых данных со значениями Green, Yellow, Red, и None.

Для отслеживания активности диаграммы во время моделирования можно использовать кнопки зумирования и курсора в инспекторе данных моделирования. Например, в этой таблице подробно описывается активность за первые 300 секунд моделирования.
| Время | Описание | Light 1 | Light2 | greenLightRequested | greenLightLocked |
|---|---|---|---|---|---|
| t = 0 | В начале моделирования оба светофора имеют красный цвет. | Red | Red | false | false |
| t = 6 | Через 6 секунд (REDDELAY), на обеих улицах ждут машины. Оба светофора запрашивают зеленый свет по настройке greenLightRequested = true. | Red | Red | true | false |
| t = 12 | Еще через 6 секунд (
| Green | Red | false, то true | true |
| t = 132 | Через 120 секунд ( | Yellow | Red | true | true |
| t = 147 | Через 15 секунд (
| Red | Green | false | false, то true |
| t = 153 | Через 6 секунд ( | Red | Green | true | true |
| t = 267 | Свет 2 желтеет 120 секунд ( | Red | Yellow | true | true |
| t = 282 | Через 15 секунд (
| Green | Red | false | false, то true |
| t = 288 | Через 6 секунд ( | Green | Red | true | true |
Цикл повторяется до тех пор, пока моделирование не закончится через t = 1000 секунд.