Чтобы реализовать рабочие режимы, которые выполняются одновременно, используйте параллелизм в Stateflow® график. Для примера, как часть сложной системы проекта, можно использовать параллельные состояния, чтобы смоделировать независимые компоненты или подсистемы, которые активны одновременно. Для получения дополнительной информации см. Model Finite State Machines.
Диаграммы Stateflow могут комбинировать эксклюзивные (OR) состояния и параллельные (AND) состояния:
Исключительные (OR) состояния представляют взаимоисключающие режимы работы. Никакие два исключительных состояния на одном иерархическом уровне не могут быть активными или выполняться одновременно. Stateflow представляет каждое исключительное состояние твердым прямоугольником.
Параллельные (И) состояния представляют независимые режимы работы. Одновременно могут быть активны два или более параллельных состояния, хотя они выполняются последовательно. Stateflow представляет каждое параллельное состояние штриховым прямоугольником с числом, указывающим его порядок выполнения.
Все состояния на заданном иерархическом уровне должны быть одного типа. Родительское состояние, или в случае состояний верхнего уровня, сам график, имеет (исключающее) OR или AND (параллельное) разложение. Это тип разложения состояния по умолчанию (исключающего) OR. Чтобы изменить тип разложения, щелкните правой кнопкой мыши родительское состояние и выберите Decomposition > AND (Parallel).
Этот пример использует параллелизм для реализации воздушного контроллера, который поддерживает температуру воздуха на уровне 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 | Параллельные (И) состояния | Вентиляторы работают как независимые компоненты, которые включают или отключают в зависимости от того, сколько требуется охлаждения. |
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 присваивает порядок выполнения параллельных состояний на основе их порядка создания в графике. Чтобы изменить порядок выполнения параллельного состояния, щелкните правой кнопкой мыши состояние и выберите значение из выпадающего списка Execution Order.
Пример Stateflow содержит диаграмму Stateflow и Simulink® подсистема.
На основе температуры воздуха temp
график Air Controller включает вентиляторы и передает значение airflow
в подсистему Physical Plant. Это выходное значение определяет величину охлаждающей активности, как указано в этой таблице.
Значение airflow | Описание | Коэффициент охлаждающей активности k Холод |
---|---|---|
0 | Вентиляторы не работают. Значение temp не уменьшается. | 0 |
1 | Работает один вентилятор. Значение temp уменьшается в зависимости от коэффициента охлаждающей активности. | 0.05 |
2 | Бегут два вентилятора. Значение temp уменьшается в зависимости от коэффициента охлаждающей активности. | 0.1 |
Блок Физический объект обновляет температуру воздуха внутри объекта на основе уравнений
temp
(0) = T начальный
temp
'(t) = (T Окружающий - temp
(t))· (k Тепло - k Охлаждение),
где:
T Initial является начальной температурой (по умолчанию = 70o)
T окружающей среды является температура окружающей среды (по умолчанию = 160o)
k Тепло является коэффициентом теплопередачи для объекта (по умолчанию = 0,01)
k Cool - коэффициент охлаждающей активности, соответствующий airflow
Новое значение temp
определяет количество охлаждения на следующем временном шаге симуляции.