Чтобы реализовать рабочие режимы, которые запускаются одновременно, используйте параллелизм в своем графике Stateflow®. Например, как часть проекта сложной системы, можно использовать параллельные состояния, чтобы смоделировать независимые компоненты или подсистемы, которые активны одновременно. Для получения дополнительной информации смотрите Образцовые Конечные автоматы.
Диаграммы Stateflow могут объединиться исключительный (OR) состояния и параллель (AND) состояния:
Исключительный (OR) состояния представляют взаимоисключающие режимы работы. Никакие два исключительных состояния на том же иерархическом уровне не могут быть активными или выполниться одновременно. Stateflow представляет каждое исключительное состояние сплошным прямоугольником.
Параллель (AND) состояния представляет независимые режимы работы. Два или больше параллельных состояния могут быть активными одновременно, несмотря на то, что они выполняются последовательным способом. Stateflow представляет каждое параллельное состояние пунктирным прямоугольником с номером, указывающим на его порядок выполнения.
Все состояния на данном иерархическом уровне должны иметь тот же тип. Метрополия, или в случае состояний верхнего уровня, сам график, имеет (исключительный) OR или AND (параллель) разложение. Типом разложения состояния по умолчанию является (исключительный) OR. Чтобы изменить тип разложения, щелкните правой кнопкой по метрополии и выберите Decomposition> AND (Parallel).
sf_aircontrol
Stateflow в качестве примера использует параллелизм, чтобы реализовать воздушный контроллер, который поддерживает температуру воздуха в 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
Воздушный Контроллер график включает вентиляторы и передает значение airflow
к подсистеме Материальной части. Это выходное значение определяет объем охлаждающегося действия, как обозначено этой таблицей.
Значение 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
определяет объем охлаждения на следующем временном шаге симуляции.