Вот только логику трогать не надо. Не ваше это. И опять, откуда это взято? Как одно к другому привязали? Почему у нормальных математиков по другому?
Одни вопросы, в ответ на которые только фантазии...
Вид для печати
Объединение 2х тетраэдров дает куб... Это в скольки значной системе?
Куб это тетраэдр и 4 пирамиды (PS 4 маленьких тетраэдра)... Но никак не 2 тетраэдра.
Как продвигается решение логического сложения (или умножения) трех четырехвариантных концевых?
PS Немного тупанул, но все равно. Пирамиды забываем.
А вот с логикой то как раз и нужно разбираться, можно сказать самое время. Дело в том, что многие логические конструкции, которых нет в математической логике у нас заложены в языке и мы их без проблем понимаем. Сейчас начал развиваться искусственный интеллект и требуется математическую логику привести к логике разговорного языка.
Ещё Льюис Керолл поставил этот вопрос
https://royallib.com/book/kerroll_ly...kaya_igra.html
нечего там разбираться, человечество пришло к единому мнению, что инь-ян (0-1) всему голова и на этом строится все.
Одна из проблем - типизирование. Компьютеры не умеют мыслить по разному в зависимости от времени или других условий и т.д. а человек может.
Это в строку можно записать хоть черта лысого, но если вы выбрали бит, то кроме 1-0 (true, false) вы уже ничего не запишите. А мыслить словами компьютер не научится никогда, он может только подбирать варианты
Ну для 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 - низший. Т.е. если хотя бы на одном из датчиков состояние наивысшего приоритета, то общий сигнал должен соответствовать ему (это как раз для вас упрощает задачу, а то начнете, что нельзя так делать с разными состояниями).
Вперед и с песней.
инь-ян (0-1) - это основа, дальше создаётся структура. Без геометрии здесь трудно разобраться.
Я же показал
1-й уровень 1-0 (true, false)
2-й уровень 00 01 10 11 (none, X+, X-, both) - здесь смыл логических значений меняется, он переходит на другой уровень
Можно почитать Книгу перемен
https://royallib.com/book/shchutskiy...n_i_tszin.html
Я вот от Вас не могу названия всего этого добра добиться(пока намёками), в смысле, в двоичной логике единица хранения информации - бит, в троичной - трит(насколько понимаю), короче, а в четверичной логике как называется единица хранения информации? Без этого, самого элементарного, кто бы чего не писал, каждый может понимать по-своему, то есть неибежны проблемы взаимного непонимания!
Это же очень важно, понимать друг друга, а Вы почему то это упускаете, вызывая неизбежное взаимонепонимание, короче, может, для начала, разобраться с самым элементарным, придумать им названия, я так понимаю, до Вас этим никто не заморачивался, Вы первооткрыватель, тогда тем более надо быть последовательным и логичным, хотя бы для того чтобы Вас поняли, Вы согласны?
Я вот скольки значную логику использую):Код://Визуализация состояния механизмов
FOR Ind_03:= 1 TO 4 DO
IF NOT MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA THEN Ind_00X[Ind_03]:= 1; Ind_00Y[Ind_03]:= FALSE; //"НЕ В ГОТОВНОСТИ"/""
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND NOT MEC[Ind_03].COM_OF AND NOT MEC[Ind_03].INP_OF
AND NOT MEC[Ind_03].COM_CR AND NOT MEC[Ind_03].INP_CR THEN Ind_00X[Ind_03]:= 2; Ind_00Y[Ind_03]:= FALSE; //"В ГОТОВНОСТИ"/"ОСТАНОВЛЕН"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND MEC[Ind_03].COM_OF AND MEC[Ind_03].OUT_ALA THEN Ind_00X[Ind_03]:= 3; Ind_00Y[Ind_03]:= FALSE; //"ПРЕДПУСКОВАЯ СИГН-Я"/"ВПЕРЕД"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND MEC[Ind_03].COM_CR AND MEC[Ind_03].OUT_ALA THEN Ind_00X[Ind_03]:= 4; Ind_00Y[Ind_03]:= FALSE; //"ПРЕДПУСКОВАЯ СИГН-Я"/"НАЗАД"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND MEC[Ind_03].COM_OF AND NOT MEC[Ind_03].INP_OF AND MEC[Ind_03].PAR_OF THEN Ind_00X[Ind_03]:= 5; Ind_00Y[Ind_03]:= FALSE; //"ЗАПУСКАЕТСЯ"/"ВПЕРЕД"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND MEC[Ind_03].COM_CR AND NOT MEC[Ind_03].INP_CR AND MEC[Ind_03].PAR_CR THEN Ind_00X[Ind_03]:= 6; Ind_00Y[Ind_03]:= FALSE; //"ЗАПУСКАЕТСЯ"/"НАЗАД"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND MEC[Ind_03].COM_OF AND MEC[Ind_03].INP_OF AND MEC[Ind_03].PAR_OF THEN Ind_00X[Ind_03]:= 7; Ind_00Y[Ind_03]:= FALSE; //"В РАБОТЕ"/"ВПЕРЕД"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND MEC[Ind_03].COM_CR AND MEC[Ind_03].INP_CR AND MEC[Ind_03].PAR_CR THEN Ind_00X[Ind_03]:= 8; Ind_00Y[Ind_03]:= FALSE; //"В РАБОТЕ"/"НАЗАД"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND NOT MEC[Ind_03].COM_OF AND MEC[Ind_03].INP_OF AND MEC[Ind_03].PAR_OF THEN Ind_00X[Ind_03]:= 9; Ind_00Y[Ind_03]:= FALSE; //"ОСТАНАВЛИВАЕТСЯ"/"ВПЕРЕД"
ELSIF MEC[Ind_03].STA_REA AND NOT MEC[Ind_03].STA_ALA AND NOT MEC[Ind_03].COM_CR AND MEC[Ind_03].INP_CR AND MEC[Ind_03].PAR_CR THEN Ind_00X[Ind_03]:= 10; Ind_00Y[Ind_03]:= FALSE; //"ОСТАНАВЛИВАЕТСЯ"/"НАЗАД"
ELSIF NOT MEC[Ind_03].STA_REA AND MEC[Ind_03].STA_ALA AND NOT MEC[Ind_03].STA_RUN AND MEC_ALA_MEM_CON[Ind_03] THEN Ind_00X[Ind_03]:= 11; Ind_00Y[Ind_03]:= TRUE; //"АВАРИЯ"/"НЕ В ГОТОВНОСТИ" - активная
ELSIF NOT MEC[Ind_03].STA_REA AND MEC[Ind_03].STA_ALA AND MEC[Ind_03].STA_RUN AND MEC[Ind_03].INP_OF AND MEC_ALA_MEM_CON[Ind_03] THEN Ind_00X[Ind_03]:= 12; Ind_00Y[Ind_03]:= TRUE; //"АВАРИЯ"/"ВПЕРЕД" - активная
ELSIF NOT MEC[Ind_03].STA_REA AND MEC[Ind_03].STA_ALA AND MEC[Ind_03].STA_RUN AND MEC[Ind_03].INP_CR AND MEC_ALA_MEM_CON[Ind_03] THEN Ind_00X[Ind_03]:= 13; Ind_00Y[Ind_03]:= TRUE; //"АВАРИЯ"/"НАЗАД" - активная
ELSIF NOT MEC[Ind_03].STA_REA AND MEC[Ind_03].STA_ALA AND NOT MEC[Ind_03].STA_RUN AND MEC_ALA_CUR[Ind_03] THEN Ind_00X[Ind_03]:= 14; Ind_00Y[Ind_03]:= FALSE; //"АВАРИЯ"/"НЕ В ГОТОВНОСТИ"
ELSIF NOT MEC[Ind_03].STA_REA AND MEC[Ind_03].STA_ALA AND MEC[Ind_03].STA_RUN AND MEC[Ind_03].INP_OF AND MEC_ALA_CUR[Ind_03] THEN Ind_00X[Ind_03]:= 15; Ind_00Y[Ind_03]:= FALSE; //"АВАРИЯ"/"ВПЕРЕД"
ELSIF NOT MEC[Ind_03].STA_REA AND MEC[Ind_03].STA_ALA AND MEC[Ind_03].STA_RUN AND MEC[Ind_03].INP_CR AND MEC_ALA_CUR[Ind_03] THEN Ind_00X[Ind_03]:= 16; Ind_00Y[Ind_03]:= FALSE; //"АВАРИЯ"/"НАЗАД"
ELSE Ind_00X[Ind_03]:= 0; Ind_00Y[Ind_03]:= FALSE; //"НЕ ОПРЕДЕЛЕНО"/"НЕ ОПРЕДЕЛЕНО"
END_IF
END_FOR