К списку уроков

Урок 14

Закон де Моргана в логических схемах

Как переносить отрицание через AND и OR, проверять эквивалентность по таблице истинности и применять преобразование в FBD.

logicintermediateшколавузинженерANDORNOTEQ

1. Закон де Моргана

Закон де Моргана позволяет преобразовывать логические выражения, содержащие отрицание нескольких условий. Для логической операции AND он записывается так:

NOT(A AND B) = NOT A OR NOT B

Иными словами, условие «не выполняются одновременно A и B» равносильно условию «не выполняется A или не выполняется B».

Существует и второй закон де Моргана:

NOT(A OR B) = NOT A AND NOT B

Отрицание группы условий меняет AND на OR, а OR на AND. При этом отрицание применяется к каждому отдельному условию.

2. Проверка по таблице истинности

Проверим первый закон для всех четырёх комбинаций входов A и B.

ABA AND BY1 = NOT(A AND B)NOT ANOT BY2 = NOT A OR NOT B
0001111
0101101
1001011
1110000

Во всех четырёх комбинациях результаты Y1 и Y2 совпадают. Следовательно, обе схемы логически эквивалентны.

3. Практический пример

Предположим, что оборудование разрешено запускать только при одновременном выполнении двух условий:

  • A — защитная дверь закрыта;
  • B — давление воздуха в норме.

Разрешение работы можно записать так:

RunPermit = DoorClosed AND PressureOK

Сигнал запрета можно получить отрицанием общего разрешения:

Block = NOT(DoorClosed AND PressureOK)

По закону де Моргана это выражение можно переписать:

Block = NOT DoorClosed OR NOT PressureOK

Вторая форма часто удобнее для диагностики: она прямо показывает, что блокировка возникает при открытой двери или недостаточном давлении.

4. Проверка закона в FBD-симуляторе

Программа к уроку строит обе эквивалентные ветви. Верхняя ветвь вычисляет Y1 = NOT(A AND B), нижняя — Y2 = NOT A OR NOT B. Блок EQ сравнивает результаты и формирует выход Y_EQUAL.

1. Откройте программу в симуляторе. 2. Запустите режим симуляции. 3. Установите A = FALSE и B = FALSE, затем выполните цикл. 4. Повторите проверку для комбинаций FALSE/TRUE, TRUE/FALSE и TRUE/TRUE. 5. Сравнивайте выходы Y1 и Y2 с таблицей истинности. 6. Убедитесь, что Y_EQUAL остаётся TRUE при всех четырёх комбинациях.

Если Y_EQUAL становится FALSE, две ветви больше не эквивалентны: проверьте соединения и расположение блоков NOT.

5. Где закон применяется в сложных схемах

Цепи разрешений и блокировок

В промышленных программах запуск механизма обычно зависит от нескольких условий:

Permit = SafetyOK AND DriveReady AND PressureOK AND ProductPresent

Отрицание общего разрешения можно представить как объединение отдельных неисправностей:

NotPermit =
    NOT SafetyOK
    OR NOT DriveReady
    OR NOT PressureOK
    OR NOT ProductPresent

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

Обработка нормально замкнутых сигналов

Аварийные кнопки, защитные двери и некоторые датчики часто подключаются по нормально замкнутой схеме. Поэтому в программе встречается много инверсных сигналов. Законы де Моргана помогают правильно переносить отрицание через группы AND и OR, не изменяя смысл алгоритма.

Формирование общей аварии

Например, готовность системы задаётся так:

SystemReady = Drive1Ready AND Drive2Ready AND RobotReady

Тогда общее состояние неисправности:

CommonFault = NOT SystemReady

эквивалентно выражению:

CommonFault =
    NOT Drive1Ready
    OR NOT Drive2Ready
    OR NOT RobotReady

6. Упрощение и нормализация программ

Закон де Моргана применяется при:

  • оптимизации сложных логических выражений;
  • преобразовании алгоритмов между FBD и LD;
  • анализе таблиц истинности;
  • построении карт Карно;
  • автоматической компиляции логических схем;
  • устранении лишних инверсий.

Эквивалентные ветви полезны для обучения и тестирования, но не образуют полноценное резервирование безопасности: обе ветви используют одинаковые входные данные и логически зависят друг от друга.

7. Краткий итог

Законы де Моргана позволяют переносить отрицание через группы логических условий без изменения результата:

NOT(A AND B) = NOT A OR NOT B
NOT(A OR B)  = NOT A AND NOT B

В FBD это помогает преобразовывать разрешения в диагностические признаки запрета, работать с инверсными сигналами и проверять эквивалентность разных представлений одной логики.

Практический блок

Откройте связанный пример в редакторе, запустите симуляцию и повторите упражнение из статьи. JSON можно скачать отдельно для просмотра или переноса.