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

Первые шаги в конечных автоматах

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

Рассмотрите работу с конечным автоматом (КА) на примере модели системы автоматического пожаротушения. Итоговая модель будет включать в себя все основные элементы библиотеки КА stateflow button library:

Допустим, что модель может находиться в следующих состояниях:

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

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

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

im1

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

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

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

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

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

im2

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

im3

Чтобы добавить в модель более сложные условия, можно использовать узлы:

im4

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

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