Чтобы реализовать рабочие режимы, которые запускаются одновременно, используйте параллелизм в своем графике Stateflow®. Например, как часть проекта сложной системы, можно использовать параллельные состояния, чтобы смоделировать независимые компоненты или подсистемы, которые активны одновременно. Для получения дополнительной информации смотрите Конечные автоматы Модели.
Диаграммы Stateflow могут объединиться исключительный (OR) состояния и параллель (AND) состояния:
Исключительный (OR) состояния представляют взаимоисключающие режимы работы. Никакие два исключительных состояния на том же иерархическом уровне не могут быть активными или выполниться одновременно. Stateflow представляет каждое исключительное состояние сплошным прямоугольником.
Параллель (AND) состояния представляет независимые режимы работы. Два или больше параллельных состояния могут быть активными одновременно, несмотря на то, что они выполняются последовательным способом. Stateflow представляет каждое параллельное состояние пунктирным прямоугольником с номером, указывающим на его порядок выполнения.
Все состояния на данном иерархическом уровне должны иметь тот же тип. Метрополия, или в случае состояний верхнего уровня, сам график, имеет (исключительный) OR или AND (параллель) разложение. Типом разложения состояния по умолчанию является (исключительный) OR. Чтобы изменить тип разложения, щелкните правой кнопкой по метрополии и выберите Decomposition> AND (Parallel).
Пример Stateflow sf_aircontrol
использует параллелизм, чтобы реализовать воздушный контроллер, который обеспечивает температуру воздуха в 120 градусах в области физического объекта.
Контроллер управляет двумя вентиляторами. Первый вентилятор включает, когда температура воздуха повышается выше 120 градусов. Второй вентилятор обеспечивает дополнительное охлаждение, когда температура воздуха повышается выше 150 градусов. График моделирует эти вентиляторы, когда параллель утверждает FAN1
и FAN2
, оба из которых активны, когда контроллер включен. За исключением их операционных порогов, у вентиляторов есть идентичная настройка состояний и переходов, который отражает два режима работы вентилятора (On
и Off
).
Третий параллельный SpeedValue
состояния вычисляет значение выходных данных
airflow
на основе того, сколько вентиляторов циклически повторились на на каждом временном шаге. Булево выражение in(FAN1.On)
имеет значение 1 когда On
состояние FAN1
активно. В противном случае, in(FAN1.On)
равняется 0. Значение in(FAN2.On)
представляет ли FAN2
циклически повторился на или прочь. Сумма этих выражений указывает на количество вентиляторов, которые включены во время каждого временного шага.
Чтобы дать уникальные идентификаторы объектов, когда у них будет то же имя в различных частях иерархии графика, используйте запись через точку, такую как Fan1.On
и Fan2.On
. Для получения дополнительной информации смотрите, Идентифицируют Данные при помощи Записи через точку.
Эта таблица приводит объяснение для использования исключительного (OR) и параллель (AND) состояния в воздушном контроллере график.
Состояние | Разложение | Объяснение |
---|---|---|
PowerOff , PowerOn | Исключительный (OR) состояния | Контроллер не может быть включен и прочь одновременно. |
FAN1 , FAN2 | Параллель (AND) состояния | Вентиляторы действуют в качестве независимых компонентов, которые включают или выключают в зависимости от того, сколько охлаждения требуется. |
FAN1.On , FAN1.Off | Исключительный (OR) состояния | Вентилятор 1 не может работать и прочь одновременно. |
FAN2.On , FAN2.Off | Исключительный (OR) состояния | Вентилятор 2 не может работать и прочь одновременно. |
SpeedValue | Параллель (AND) состояние | SpeedValue представляет независимую подсистему, которая контролирует состояние вентиляторов на каждом временном шаге. |
Несмотря на то, что FAN1
, FAN2
, и SpeedValue
активны одновременно, эти состояния выполняются последовательным способом в процессе моделирования. Числа в верхних правых углах состояний задают порядок выполнения. Объяснение для этого порядка выполнения:
FAN1
выполняется сначала, потому что это циклически повторяется на при более низкой температуре, чем FAN2
. Это может включить независимо от ли FAN2
включен или прочь.
FAN2
выполняется второй, потому что это циклически повторяется на при более высокой температуре, чем FAN1
. Это может включить только если FAN1
уже включено.
SpeedValue
выполняется в последний раз, таким образом, это может наблюдать самое актуальное состояние FAN1
и FAN2
.
По умолчанию Stateflow присваивает порядок выполнения параллельных состояний на основе их порядка создания в графике. Чтобы изменить порядок выполнения параллельного состояния, щелкните правой кнопкой по состоянию и выберите значение из Execution Order выпадающий список.
Пример Stateflow содержит диаграмму Stateflow и подсистему Simulink®.
На основе температуры воздуха temp
, график Air Controller включает вентиляторы и передает значение airflow
к подсистеме Physical Plant. Это выходное значение определяет объем охлаждающегося действия, как обозначено этой таблицей.
Значение airflow | Описание | Охлаждение фактора действия холодный k |
---|---|---|
0 | Никакие вентиляторы не запускаются. Значение temp не уменьшается. | 0 |
1 | Один вентилятор запускается. Значение temp уменьшения согласно охлаждающемуся фактору действия. | 0.05 |
2 | Два вентилятора запускаются. Значение temp уменьшения согласно охлаждающемуся фактору действия. | 0.1 |
Блок Physical Plant обновляет температуру воздуха в объекте на основе уравнений
temp
(0) = Начальная буква T
temp
'(t) = (Окружающая среда T - temp
T·Тепло k - Холодный k),
где:
Начальная буква T является начальной температурой (значение по умолчанию = 70o)
Окружающая среда T является температурой окружающей среды (значение по умолчанию = 160o)
Тепло k является фактором теплопередачи для объекта (значение по умолчанию = 0.01)
Холодный k является охлаждающимся соответствием фактора действия airflow
Новое значение temp
определяет объем охлаждения на следующем временном шаге симуляции.