Цитата Сообщение от МихаилГл Посмотреть сообщение
Вместо параметров типа: Концевой датчик закрытия/открытия в сработке (4х), Аварийный концевой датчик закрытия/открытия в сработке (4х), Датчик момента закрытия/открытия в сработке (4х), я хочу применять не 0 и 1, а 4хвариантное значение с этих датчиков, а именно: 0 - датчик не в сработке, 1 - датчик в сработке, 2 - кз линии датчика, 3 - обрыв линии датчика.
Хочу в итоге получить такое же значение сигнала Общий запрет закрытия/открытия задвижки (4х), согласен на следующий приоритет выдачи этого сигнала: 3 - наивысший, 0 - низший. Т.е. если хотя бы на одном из датчиков состояние наивысшего приоритета, то общий сигнал должен соответствовать ему (это как раз для вас упрощает задачу, а то начнете, что нельзя так делать с разными состояниями).

Вперед и с песней.
У вас интересная задача!

Давайте начнём сначала, есть объект ЗАДВИЖКА (gate), который можно представить в 4-х значной логике в виде СОСТОЯНИЙ
0 – задвижка находиться в состоянии СТОП
1 – задвижка ОТКРЫВАЕТСЯ
2 - задвижка ЗАКРЫВАЕТСЯ
3 – АВАРИЯ
IF Концевой датчик открытия в сработке OR Концевой датчик закрытия в сработке
Задвижка = СТОП
END
IF NOT (Концевой датчик открытия в сработке) AND Управление отрытие
Задвижка = ОТКРЫВАЕТСЯ
END
IF NOT (Концевой датчик Закрытия в сработке) AND Управление закрытие
Задвижка = ЗАКРЫВАЕТСЯ
END
IF Датчик момента открытия в сработке OR Авария датчика концевика
Задвижка = Авария
END
Затем Состояния можно использовать в алгоритме в виде событий gate.0 gate.1 gate.2 gate.3

Датчики на 4 положения по сути дела являются обычными дискретными датчиками с определением собственной аварии.