Ну для 2хвариантных (обычных) датчиков их общее состояние я бы нашел так:
Общий запрет открытия задвижки:= Концевой датчик открытия в сработке or Аварийный концевой датчик открытия в сработке or Датчик момента открытия в сработке
Общий запрет закрытия задвижки:= Концевой датчик закрытия в сработке or Аварийный концевой датчик закрытия в сработке or Датчик момента закрытия в сработке
Для 4хвариантных (namur) датчиков их общее состояние я бы хотел определить аналогично:
Общий запрет открытия задвижки (4х):= Концевой датчик открытия в сработке (4х) or4 Аварийный концевой датчик открытия в сработке (4х) or4 Датчик момента открытия в сработке (4х)
Общий запрет закрытия задвижки (4х):= Концевой датчик закрытия в сработке (4х) or4 Аварийный концевой датчик закрытия в сработке (4х) or4 Датчик момента закрытия в сработке (4х)
Вместо параметров типа: Концевой датчик закрытия/открытия в сработке (4х), Аварийный концевой датчик закрытия/открытия в сработке (4х), Датчик момента закрытия/открытия в сработке (4х), я хочу применять не 0 и 1, а 4хвариантное значение с этих датчиков, а именно: 0 - датчик не в сработке, 1 - датчик в сработке, 2 - кз линии датчика, 3 - обрыв линии датчика.
Хочу в итоге получить такое же значение сигнала Общий запрет закрытия/открытия задвижки (4х), согласен на следующий приоритет выдачи этого сигнала: 3 - наивысший, 0 - низший. Т.е. если хотя бы на одном из датчиков состояние наивысшего приоритета, то общий сигнал должен соответствовать ему (это как раз для вас упрощает задачу, а то начнете, что нельзя так делать с разными состояниями).
Вперед и с песней.
Последний раз редактировалось МихаилГл; 06.05.2025 в 09:14.
У вас интересная задача!
Давайте начнём сначала, есть объект ЗАДВИЖКА (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 положения по сути дела являются обычными дискретными датчиками с определением собственной аварии.