Цитата Сообщение от Geenerator Посмотреть сообщение
Давайте введём терминологию

ОБЪЕКТ - это например ЗАДВИЖКА (GATE) у которого может быть 4-ре состояния 0 (00) - СТОП, 1 (01) - открывается, 2 (10) - закрывается, 3 (11) - в аварии
СОСТОЯНИЕ - то что протекает во времени. Единица информации Сет или два бита.
СОБЫТИЕ - это срабатывание дискретного датчика или переход из одного состояния в другое. Происходит мгновенно, во времени не протекает. Единица информации Бит.

Для любой задачи известен набор датчиков (событий), которые могут произойти.
1. Исходя из известных событий необходимо определить СОСТОЯНИЕ объекта

IF событие1 оr событие2
GATE = 0
END

IF событие1 and событие2
GATE = 1
END

IF событие2 and событие3
GATE = 2
END

IF событие4 оr событие5
GATE = 3
END

Следующий этап - это написание алгоритма перехода из одного состояния в другое. Благодаря возможностям языка ST, состояние может участвовать в логике как событие. То есть если задвижка закрывается, то состояние ЗАКРЫТИЕ может рассматриваться как событие GATE.2=true

Это простейший случая для одного ОБЪЕКТА. Таких объектов может быть несколько, например 3 задвижки и в этом случае можно в алгоритме анализировать в каком состоянии находится ОБЪЕКТЫ

IF GATE1.3=true оr GATE3.3=true
GATE3 = 3
END
Дарю следующий этап - объект с событиями, состояниями, переходами и даже таймером