Чтобы реализовать режимы работы, которые выполняются одновременно, используйте параллелизм в диаграмме Stateflow ®. Например, в рамках сложной конструкции системы можно использовать параллельные состояния для моделирования независимых компонентов или подсистем, которые активны одновременно. Дополнительные сведения см. в разделе модели конечных автоматов.
Диаграммы потока состояний могут объединять состояния exclusive (OR) и состояния parallel (AND):
Состояния Exclusive (OR) представляют взаимоисключающие режимы работы. Никакие два исключительных состояния на одном иерархическом уровне не могут быть активными или выполняться одновременно. Поток состояний представляет каждое исключительное состояние сплошным прямоугольником.

Состояния Parallel (AND) представляют собой независимые режимы работы. Два или более параллельных состояний могут быть активными одновременно, хотя они выполняются последовательным образом. Stateflow представляет каждое параллельное состояние пунктирным прямоугольником с числом, указывающим порядок его выполнения.

Все состояния на данном иерархическом уровне должны быть одного типа. Родительское состояние или, в случае состояний верхнего уровня, сама диаграмма имеет разложение OR (исключающее) или AND (параллельное). Тип разложения состояния по умолчанию - OR (исключающее). Чтобы изменить тип разложения, щелкните правой кнопкой мыши родительское состояние и выберите Разложение > И (Параллельно).
В этом примере используется параллелизм для реализации регулятора воздуха, который поддерживает температуру воздуха на уровне 120 градусов в физической установке.

Контроллер управляет двумя вентиляторами. Первый вентилятор включается при повышении температуры воздуха выше 120 градусов. Второй вентилятор обеспечивает дополнительное охлаждение при повышении температуры воздуха выше 150 градусов. Диаграмма моделирует эти вентиляторы как параллельные состояния FAN1 и FAN2, которые активны при включении контроллера. За исключением их рабочих порогов, вентиляторы имеют идентичную конфигурацию состояний и переходов, отражающую два режима работы вентилятора (On и Off).
Третье параллельное состояние SpeedValue вычисляет значение выходных данных airflow исходя из того, сколько фанатов проехало на велосипеде на каждом шаге времени. Логическое выражение in(FAN1.On) имеет значение 1, когда On состояние FAN1 активен. В противном случае in(FAN1.On) равно 0. Аналогично, значение in(FAN2.On) представляет, FAN2 включил или выключил. Сумма этих выражений указывает количество вентиляторов, которые включаются в течение каждого временного шага.
В этой таблице приводится обоснование использования эксклюзивных (OR) и параллельных (AND) состояний на диаграмме контроллера воздуха.
| Государство | Разложение | Объяснение |
|---|---|---|
PowerOff, PowerOn | Исключительные состояния (ИЛИ) | Контроллер не может быть включен и выключен одновременно. |
FAN1, FAN2 | Состояния Parallel (AND) | Вентиляторы работают как независимые компоненты, которые включаются или выключаются в зависимости от требуемого объема охлаждения. |
FAN1.On, FAN1.Off | Исключительные состояния (ИЛИ) | Вентилятор 1 не может быть включен и выключен одновременно. |
FAN2.On, FAN2.Off | Исключительные состояния (ИЛИ) | Вентилятор 2 не может быть включен и выключен одновременно. |
SpeedValue | Параллельное состояние (И) | SpeedValue представляет собой независимую подсистему, которая контролирует состояние вентиляторов на каждом шаге времени. |
Примечание
Чтобы дать объектам уникальные идентификаторы, если они имеют одинаковые имена в различных частях иерархии диаграмм, используйте точечную нотацию, такую как Fan1.On и Fan2.On. Дополнительные сведения см. в разделе Идентификация данных с помощью точечного обозначения.
Хотя FAN1, FAN2, и SpeedValue активны одновременно, эти состояния выполняются в последовательном режиме во время моделирования. Числа в верхних правых углах состояний определяют порядок выполнения. Обоснование этого порядка выполнения:
FAN1 выполняется первым, потому что он работает при более низкой температуре, чем FAN2. Он может включаться независимо от того, FAN2 включен или выключен.
FAN2 выполняется в секунду, потому что он работает при более высокой температуре, чем FAN1. Он может включаться только в том случае, если FAN1 уже включен.
SpeedValue выполняется последним, чтобы он мог наблюдать за наиболее актуальным состоянием FAN1 и FAN2.
По умолчанию Stateflow назначает порядок выполнения параллельных состояний на основе их порядка создания в диаграмме. Чтобы изменить порядок выполнения параллельного состояния, щелкните его правой кнопкой мыши и выберите значение из выпадающего списка Порядок выполнения.
Пример Stateflow содержит диаграмму Stateflow и подсистему Simulink ® .

На основе температуры воздуха temp, схема контроллера воздуха включает вентиляторы и передает значение airflow в подсистему физической установки. Это выходное значение определяет величину активности охлаждения, как указано в этой таблице.
Значение airflow | Описание | Коэффициент охлаждающей активности kCool |
|---|---|---|
| 0 | Вентиляторы не работают. Значение temp не уменьшается. | 0 |
| 1 | Работает один вентилятор. Значение temp уменьшается в соответствии с коэффициентом охлаждающей активности. | 0.05 |
| 2 | Работают два вентилятора. Значение temp уменьшается в соответствии с коэффициентом охлаждающей активности. | 0.1 |
Физический блок установки обновляет температуру воздуха внутри установки на основе уравнений
temp(0) = TiInitial
temp'(t) = (TAmbient - temp(t)· (kHeat - kCool),
где:
Tiinitial - начальная температура (по умолчанию = 70o)
TAmbient - температура окружающей среды (по умолчанию = 160o)
kHeat - коэффициент теплопередачи для установки (по умолчанию = 0,01)
kCool - коэффициент охлаждающей активности, соответствующий airflow
Новое значение temp определяет степень охлаждения на следующем этапе моделирования.