Документация Engee

Введение в Конечные автоматы

Общая информация

Конечные автоматы Engee — это библиотека, которая предоставляет графический язык, включающий диаграммы перехода состояний и потоковые диаграммы.

Конечный автомат (КА) — это представление управляемой событиями системы, которая переходит из одного режима работы в другой, когда условие, определяющее изменение, истинно.

Конечные автоматы Engee позволяют строить модели двух типов:

Для более полного понимания статьи рекомендуется изучить основные компоненты среды моделирования:

Логика работы конечного автомата

  1. В модели конечного автомата в любой момент времени может быть активно только одно состояние.

  2. Состояние активируется, если условие для перехода в него выполнено.

  3. КА завершает все операции, определенные в текущем состоянии, перед тем, как перейти в следующее.

Пример реализации конечного автомата в Engee (подробный разбор см. здесь):

im3

Начало работы с блоком Chart

Вызов Chart. Описание принципов работы с блоком

Для начала работы с блоком Chart поставьте его на рабочее пространство Engee и зайдите в него двойным кликом мыши.

Внутри Chart библиотека блоков меняет вид:

stateflow library

  • Состояние (state) — это одно из состояний КА. В состоянии задаются действия, описывающие поведение системы в этом состоянии в виде программного кода на Julia, потоковой диаграммы или вложенного КА.

    stateflow actions

  • Узел (connective junction) — это точки соединения переходов в системе. Узел является точкой принятия решения на пути перехода.

    Если переход из узла зациклен и условия для него всегда выполняются, то должен быть безусловный выход из этого цикла, чтобы избежать ошибки решателя. Например, так делать нельзя (бесконечный цикл):

    state machines not to do

  • Переход по умолчанию (default transition) — это переход, который выполняется до активации какого-либо состояния.

  • Переход (transition) — это линия со стрелкой, описывающая переход от одного состояния КА, в котором переход начинается, к другому. Для перехода можно определить условия и действия. Условия перехода определяют, когда произойдет смена состояния, а действия – что должно произойти в момент смены (подробнее см. в статье).

    stateflow condition 1

Потоковые диаграммы

Потоковая диаграмма (flow chart) — это графическая конструкция, представляющая собой поток выполнения операций или логики в системе. Диаграмма строится из комбинаций соединительных узлов и переходов. Такие диаграммы применяются в моделировании деревьев решений, итерационных циклов и т.д.

Логика работы потоковой диаграммы:

  • Потоковая диаграмма выполняется на каждом шаге работы блока Chart.

  • Результат каждого выполнения потоковой диаграммы не зависит от предыдущего.

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

  • На переходах задаются действия и условия, определяющие поведение модели (подробнее в статье).

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

Примеры реализации конструкций if-else и while с помощью потоковых диаграмм:

If-Else While

stateflow flow chart 1

sf loop 1 1

if x > 2
    y = 9;
else
    y = 15;
end
i = 0
while y < 15
    y += 2 * i
    i += 1
end

Диаграммы состояний

Диаграмма состояний — это графическое представление конечного автомата, включающее набор состояний и правила переходов между ними.

Рассмотрите работу с КА на примере модели системы автоматического пожаротушения. Она может находиться в следующих состояниях:

  • Rest (покой) — предельная концентрация дыма не превышена.

  • Alarm (тревога) — система включает ороситель.

  • Fault (неисправность) — самодиагностика показала неисправность системы, дальнейшая работа невозможна.

im1

Данный пример демонстрирует логику КА и не является исчерпывающим. Для корректной настройки и сборки полноценной модели КА рекомендуем ознакомиться со статьей.

У системы есть один вход — концентрация дыма в воздухе и два выхода — «оросители» и «лампа неисправности». В зависимости от значения входного сигнала система переходит в одно из возможных состояний, и соответственно устанавливаются значения сигналов на выходе:

  • Rest (покой) — оросители выключены, лампа неисправности выключена.

  • Alarm (тревога) — оросители включены, лампа неисправности включена.

  • Fault (неисправность) — оросители выключены, лампа неисправности включена.

Система переходит из одного состояния в другое посредством переходов (transition):

im2

Переходы между состояниями происходят при выполнении определенных условий (condition), заданных в модели. Условием перехода может быть событие, логическое условие и время. В нашем примере условием перехода от состояния Покой к состоянию Тревога будет «превышение предельно допустимой концентрации дыма», а Неисправность возникает, если датчик показывает отрицательное значение концентрации.

im3

Чтобы добавить в модель более сложные условия, можно использовать соединительные узлы (connective junction).

im4

Верхний соединительный узел на рисунке позволяет переключиться в состояние Неисправность из состояния Покой не только в случае отрицательного значения концентрации, но и не позволяет системе перейти из состояния Покой в состояние Тревога, когда показатель концентрации слишком высокий, что не отвечает реальной ситуации. В этом случае система все равно перейдет в состояние Неисправность.

Визуализация результатов

Процесс визуализации КА не имеет отличий от визуализации моделей:

  • В окне графиков stateflow graphs button, при включенном логировании сигнальных линий выберите выводимый сигнал (в нашем случае Chart.a — выходную переменную a из блока Chart):

    chart y

  • Запустите симуляцию модели start simulation button. Результат симуляции будет показан на координатной плоскости окна графиков:

    sf no sa 1

Подробнее о визуализации в Engee смотрите здесь.