exponenta event banner

Планирование действий диаграммы с использованием временной логики

Чтобы определить поведение диаграммы Stateflow ® с точки зрения времени моделирования, включите временные логические операторы в действия состояния и перехода диаграммы. Операторы временной логики - это встроенные функции, которые могут определить продолжительность времени, в течение которого состояние остается активным или логическое условие остается верным. С помощью временной логики можно управлять синхронизацией:

  • Переходы между состояниями

  • Вызовы функций

  • Изменения значений переменных

Дополнительные сведения см. в разделе Определение поведения диаграммы с помощью действий.

Операторы временной логики

Наиболее распространенными операторами для временной логики абсолютного времени являются after, elapsed, и duration.

ОператорСинтаксисОписание

после

after(n,sec)

Прибыль true если n с момента активации связанного состояния прошло секунд времени моделирования. В противном случае оператор возвращает false.

истекший

elapsed(sec)

Возвращает число секунд времени моделирования, прошедших с момента активации связанного состояния.

продолжительность

duration(C)

Возвращает число секунд времени моделирования, прошедших с момента логического условия C становится true.

Каждый оператор сбрасывает связанный с ним таймер на ноль каждый раз, когда:

  • Состояние, содержащее оператор, повторно активируется.

  • Исходное состояние перехода, содержащего оператор, повторно активируется.

  • Логическое условие в duration оператор становится false.

Примечание

Некоторые операторы, такие как after, поддерживать временную логику на основе событий и временную логику абсолютного времени в секундах (sec), миллисекунды (msec) и микросекунды (usec). Дополнительные сведения см. в разделе Управление выполнением диаграммы с помощью временной логики.

Пример временной логики

В этом примере используется временная логика для моделирования контроллера взрыва, который регулирует внутреннюю температуру котла.

Пример состоит из диаграммы Stateflow и подсистемы Simulink ®. На диаграмме контроллера Bang-Bang сравнивается текущая температура котла с контрольной уставкой и определяется необходимость включения котла. Подсистема модели котельной установки моделирует динамику внутри котла, увеличивая или понижая его температуру в соответствии с состоянием контроллера. Затем температура котла возвращается на схему контроллера для следующего этапа моделирования.

Диаграмма контроллера Bang-Bang использует оператор временной логики after кому:

  • Регулировка времени цикла bang-bang, когда котел чередуется между включением и выключением.

  • Управление светодиодным индикатором состояния, который мигает с различной скоростью в зависимости от режима работы котла.

Таймеры, определяющие поведение подсистем котла и светодиодов, работают независимо друг от друга без блокирования или нарушения моделирования контроллера.

Хронометраж цикла Bang-Bang

Диаграмма контроллера Bang-Bang содержит пару подстанций, которые представляют два режима работы котла, On и Off. Диаграмма использует выходные данные активного состояния boiler для указания активного подсостояния.

Chart modeling a bang-bang controller. Subcharts appear as opaque boxes to hide the low-level details of the chart.

Метки на переходах между On и Off Подстанции определяют поведение контроллера bang-bang.

ПереходЭтикеткаОписание
От On кому Offafter(20,sec)Переход к Off штат, проведя 20 секунд в On состояние.
От Off кому Onafter(40,sec)[cold()]Когда температура котла ниже контрольной уставки (когда графическая функция cold() прибыль true), переход к On штат, проведя не менее 40 секунд в Off состояние.
От On кому Off[Heater.On.warm()]Когда температура котла находится на или выше контрольной уставки (когда графическая функция Heater.On.warm() прибыль true), переход к Off состояние.

В результате этих переходных действий хронометраж цикла bang-bang зависит от текущей температуры котла. В начале моделирования, когда котел холодный, контроллер проводит 40 секунд в Off состояние и 20 секунд в On состояние. В момент времени t = 478 секунд температура котла достигает контрольной точки. С этого момента котел должен компенсировать только тепло, потерянное во время Off состояние. Затем контроллер проводит 40 секунд в Off состояние и 4 секунды в On состояние.

Simulation Data Inspector showing the output of the chart.

Индикатор синхронизации состояния

Off состояние содержит подсостояние Flash с переходом самоконтура, охраняемым действием after(5,sec). Из-за этого перехода, когда Off состояние активно, подсостояние выполняет действие входа и вызывает графическую функцию flash_LED каждые 5 секунд. Функция переключает значение выходного символа LED от 0 до 1.

The Off substate.

On состояние вызывает графическую функцию flash_LED как действие состояния типа en,du. Когда On состояние активно, он вызывает функцию на каждом шаге моделирования (в данном случае, каждую секунду), переключая значение выходного символа LED от 0 до 2.

The On substate.

В результате хронометраж светодиодного индикатора состояния зависит от режима работы котла. Например:

  • От t = 0 до t = 40 секунд котел выключен и LED сигнал изменяется от 0 до 1 каждые 5 секунд.

  • От t = 40 до t = 60 секунд, котел включен и LED сигнал изменяется от 0 до 2 в секунду.

  • От t = 60 до t = 100 секунд котел снова отключается, и LED сигнал изменяется от 0 до 1 каждые 5 секунд.

Simulation Data Inspector showing the output of the chart.

Изучение примера

Используйте дополнительную временную логику, чтобы выяснить, как изменяется время цикла взрыва по мере приближения температуры котла к контрольной точке.

  1. Введите новые действия состояния, которые вызывают elapsed и duration операторов.

    • В On состояние, пусть Timer1 - продолжительность времени, в течение которого On состояние активно:

      en,du,ex: Timer1 = elapsed(sec)

    • В Off состояние, пусть Timer2 - продолжительность времени, в течение которого температура котла находится на уровне или выше контрольной уставки:

      en,du,ex: Timer2 = duration(temp>=reference)

    Этикетка en,du,ex указывает, что эти действия выполняются при каждом активном состоянии.

  2. На панели Символы (Symbols) щелкните Разрешить неопределенные символы (Resolve Undefined Symbols Редактор Stateflow разрешает символы Timer1 и Timer2 в качестве выходных данных.

  3. Включите ведение журнала для каждого из этих символов. На панели «Символы» выберите каждый символ. В инспекторе свойств в разделе «Ведение журнала» выберите «Регистрировать данные сигнала».

    • Timer1

    • Timer2

  4. На вкладке Моделирование (Simulation) щелкните Выполнить (Run).

  5. На вкладке Моделирование (Simulation) в разделе Результаты проверки (Review Results) щелкните Инспектор данных (Data Inspector).

  6. В инспекторе данных моделирования просмотрите сигналы. boiler и Timer1 в одном и том же наборе осей. График показывает, что:

    • On фаза цикла bang-bang обычно длится 20 секунд, когда котел холодный, и 4 секунды, когда котел теплый.

    • Первый раз, когда котел достигает контрольной температуры, цикл преждевременно прерывается, и контроллер остается в On состояние всего на 18 секунд.

    • Когда котел теплый, первый цикл немного короче, чем последующие циклы, так как контроллер остается в On состояние всего на 3 секунды.

    Simulation Data Inspector showing the output of the chart.

  7. В инспекторе данных моделирования просмотрите сигналы. boiler и Timer2 в одном и том же наборе осей. График показывает, что:

    • Как только котел теплый, обычно требуется 9 секунд, чтобы охладиться в Off фаза цикла bang-bang.

    • Первый раз, когда котел достигает эталонной температуры, для охлаждения требуется более чем в два раза больше времени (19 секунд).

    Simulation Data Inspector showing the output of the chart.

Более короткий цикл и более длительное время охлаждения являются следствием иерархии подсостояния внутри On состояние. Когда котел впервые достигает контрольной температуры, переход от HIGH кому NORM сохраняет контроллер включенным в течение дополнительного временного шага, что приводит к более теплому, чем обычно, котлу. В более поздних циклах соединение истории вызывает On для начала с активной NORM подсостояние. Затем контроллер выключается сразу после достижения котлом эталонной температуры, что приводит к более холодному котлу.

См. также

| |

Связанные примеры

Подробнее