ГлавнаяАкадемияДатчики и входы: нормализация сигналов → Понятие 'сухого контакта': NO/NC (нормально открытый/закрытый)

Понятие 'сухого контакта': NO/NC (нормально открытый/закрытый)

Урок 1 · Датчики и входы: нормализация сигналов · 30 мин · theory

Что такое «сухой контакт»? Введение в концепцию

В мире автоматизации и электротехники мы постоянно работаем с сигналами. Сигнал — это, по сути, информация, переданная в виде электрического импульса. Однако способы передачи этой информации могут кардинально отличаться. Одним из самых фундаментальных и распространенных методов является использование так называемого «сухого контакта».

> 💡 Подсказка: Входы для «сухих контактов» на контроллерах HI имеют внутреннюю подтяжку к источнику питания (pull-up). Именно это позволяет «увидеть» замыкание или размыкание внешней цепи, не имеющей собственного питания.

Давайте разберемся в этом понятии по шагам.

«Сухой контакт» (Dry Contact) — это пара электрических контактов, которые не имеют собственного внутреннего источника напряжения (или, как говорят инженеры, гальванически развязаны от источника питания). Представьте себе обычный выключатель света на стене, отсоединенный от всех проводов. У него есть два вывода. Когда вы нажимаете клавишу, эти выводы внутри механически соединяются. Когда отпускаете — разъединяются. Сам по себе этот выключатель не генерирует электричество. Он лишь способен изменять свое состояние: проводить ток или не проводить. Это и есть идеальный пример «сухого контакта».

Для сравнения, существует понятие «мокрого контакта» (Wet Contact). Это контакт, который при срабатывании сам подает на свои выходы определенное напряжение. Например, выход тревоги на камере видеонаблюдения может при обнаружении движения выдавать +12В на сигнальный провод. Если подключить такой выход к входу контроллера, рассчитанному на «сухой контакт», можно повредить контроллер. Входы контроллера HI предназначены именно для работы с «сухими контактами».

Как это работает на контроллере HI?

Если «сухой контакт» сам не подает напряжение, как же контроллер узнает о его состоянии? Здесь в игру вступает внутренняя схема универсального входа (UI) контроллера. Внутри контроллера на сигнальный вход подается небольшое служебное напряжение через специальный резистор (этот механизм называется подтяжкой к питанию, или pull-up).

  • Когда внешний «сухой контакт» разомкнут: Току некуда течь. Контроллер «видит» на своем входе то самое служебное напряжение. Для цифровой логики это состояние интерпретируется как логическая «1» (или `true`).
  • Когда внешний «сухой контакт» замыкается: Он создает путь для протекания тока на общую землю (GND). Напряжение на входе контроллера падает почти до нуля. Это состояние интерпретируется как логический «0» (или `false`).
  • Таким образом, контроллер не пассивно ждет сигнала, а активно «ощупывает» подключенную к нему цепь, подавая на нее слабое напряжение и измеряя результат.

    Где применяются «сухие контакты»?

    Практически везде. Это универсальный язык общения между устройствами:

    Понимание этой концепции является краеугольным камнем для подключения подавляющего большинства дискретных датчиков, о которых мы говорили в предыдущем уроке.

    ---

    Нормально открытый (NO) контакт: логика и применение

    Теперь, когда мы поняли, что такое «сухой контакт», необходимо разобраться в двух его фундаментальных разновидностях: нормально открытый (NO) и нормально закрытый (NC). Начнем с первого.

    Нормально открытый (Normally Open, NO) — это такой тип контакта, который в своем нормальном, неактивном состоянии (в состоянии покоя) разомкнут.

    Логика на входе контроллера

    Давайте вернемся к нашей модели с подтяжкой (pull-up) на входе контроллера HI:

  • Датчик NO в покое (дверь закрыта, кнопка не нажата): Контакт разомкнут. Ток не течет на землю. Контроллер видит на входе высокое напряжение (логическая «1»).
  • Датчик NO сработал (дверь открылась, кнопка нажата): Контакт замкнулся. Ток потек на землю. Напряжение на входе контроллера упало до нуля (логическая «0»).
  • > ⚠️ Внимание: Заметили инверсию? Физически цепь замыкается, а логическое состояние меняется с 1 на 0. Это важный момент, который мы научимся правильно обрабатывать в Node-RED. Однако, для простоты, многие современные узлы (включая специализированные для платформы HI) могут автоматически инвертировать этот сигнал для вас. В стандартной интерпретации, логический `true` обычно соответствует событию (срабатыванию), а `false` — покою. Поэтому после обработки в Node-RED мы ожидаем получить `true` при нажатии кнопки.

    Примеры использования NO-контактов

    NO-контакты идеально подходят для событий, которые инициируют какое-либо действие.

    | Устройство | Состояние покоя (NO, разомкнут) | Состояние срабатывания (замкнут) | Логика в Node-RED (после нормализации) |

    | ----------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------- |

    | Кнопка дверного звонка | Никто не нажимает, цепь разомкнута. | Палец нажал на кнопку, цепь замкнулась. | `msg.payload: true` |

    | Кнопка запроса выхода | Дверь заперта, кнопка не нажата. | Человек нажимает кнопку, чтобы выйти. | `msg.payload: true` |

    | Датчик протечки воды | На полу сухо, контакты датчика не соединены водой. | Вода попала на датчик и замкнула контакты. | `msg.payload: true` |

    | Некоторые PIR-датчики | В комнате нет движения, выходное реле датчика разомкнуто. | Датчик обнаружил движение и замкнул контакты своего реле. | `msg.payload: true` |

    Пример сообщения в Node-RED от нажатой кнопки, подключенной к NO-контакту (после нормализации):
    {
    

    "payload": true,

    "topic": "DI-05",

    "meta": {

    "source": "button-exit-main-door",

    "ts": 1678886400000,

    "type": "NO"

    }

    }

    Главный недостаток NO-контактов проявляется, когда мы говорим о безопасности. Если провод, идущий к NO-датчику, будет оборван, цепь останется разомкнутой. Для контроллера это будет выглядеть так, будто датчик находится в состоянии покоя. Система не сможет отличить исправное состояние покоя от аварийного обрыва линии.

    ---

    Нормально закрытый (NC) контакт: логика и безопасность

    В противовес NO-контактам выступает их ключевой аналог для систем безопасности — нормально закрытый (NC) контакт.

    Нормально закрытый (Normally Closed, NC) — это тип контакта, который в своем нормальном, неактивном состоянии (в состоянии покоя) замкнут.

    Ключевое преимущество: отказоустойчивость (Fail-Safe)

    Здесь кроется самое важное свойство NC-контактов. Давайте снова посмотрим на логику входа контроллера HI:

  • Датчик NC в покое (дверь закрыта, окно не вскрыто): Контакт замкнут. Контрольный ток течет на землю. Контроллер видит на входе низкое напряжение (логический «0»).
  • Датчик NC сработал (дверь открыли): Контакт разомкнулся. Ток перестал течь. Напряжение на входе контроллера стало высоким (логическая «1»).
  • Авария (обрыв провода или поломка датчика): Цепь также оказывается разомкнутой. Ток перестает течь. Напряжение на входе становится высоким (логическая «1»).
  • Результат в пунктах 2 и 3 для контроллера идентичен. Это означает, что любое нарушение целостности охранного шлейфа (как реальное срабатывание, так и саботаж или неисправность) будет немедленно расценено системой как тревожное событие. Эта концепция называется Fail-Safe (отказоустойчивость или безопасность при отказе).

    > ⚠️ Внимание: Для любых систем, связанных с безопасностью (охрана периметра, контроль доступа, пожарная сигнализация), стандарт индустрии — использовать исключительно NC-контакты. Это гарантирует, что при обрыве кабеля или выходе датчика из строя система перейдет в состояние тревоги, а не останется в неведении.

    Сравнение NO и NC в охранной системе

    | Сценарий | Реакция системы с NO-датчиком | Реакция системы с NC-датчиком | Вывод |

    | ---------------------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------- |

    | Нормальное состояние (Дверь закрыта) | Цепь разомкнута. Система в порядке. | Цепь замкнута. Протекает контрольный ток. Система в порядке. | OK |

    | Тревога (Дверь открыта) | Цепь замыкается. Система фиксирует тревогу. | Цепь размыкается. Система фиксирует тревогу. | OK |

    | Саботаж (Перерезан кабель к датчику) | Цепь остается разомкнутой. Система считает, что все в порядке. | Цепь размыкается. Система фиксирует тревогу. | NO - Опасно!
    NC - Безопасно! |

    | Неисправность (Датчик вышел из строя) | Цепь, скорее всего, останется разомкнутой. Система не видит проблемы. | Цепь, скорее всего, разомкнется. Система фиксирует тревогу/неисправность. | NO - Опасно!
    NC - Безопасно! |

    Примеры использования NC-контактов

    ---

    Практика в Node-RED: Чтение и нормализация сигналов

    Теория важна, но автоматизация — это практика. Давайте посмотрим, как работать с NO/NC контактами непосредственно в среде Node-RED на контроллере HI. Для этого в стандартной палитре платформы предусмотрен специальный узел `HI-DI` (HI Digital Input).

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

    Настройка узла `HI-DI`

    Предположим, у нас есть геркон на входной двери, подключенный к универсальному входу №7 (UI-07). Геркон, как и положено для системы безопасности, имеет NC-контакт.

  • Перетащите узел `HI-DI` на поле редактора.
  • Откройте его настройки двойным кликом. Вы увидите несколько ключевых полей:
  • * Name: Дайте узлу осмысленное имя, например, «Геркон входной двери».

    * Physical Input: Выберите из выпадающего списка вход, к которому подключен датчик. В нашем случае — `UI-7`.

    * Contact Type: Это самый важный параметр. Здесь вы указываете, какой тип контакта вы используете. У нас NC-датчик, поэтому выбираем `Normally Closed (NC)`.

    Внутренняя логика узла и нормализация

    Что произойдет после такой настройки? Узел `HI-DI` возьмет на себя всю работу по нормализации сигнала.

    Таким образом, на выходе узла `HI-DI` `true` всегда означает событие/тревогу/активность, а `false` — состояние покоя, независимо от того, какой физический тип контакта (NO или NC) используется. Это чрезвычайно удобно и делает остальную часть потока унифицированной и легко читаемой.

    Пример потока

    Простая, но надежная цепочка для обработки сигнала от геркона:

    [HI-DI: Геркон вх. двери]--->[RBE]--->[Switch: Дверь открыта?]--+-- (true) -->[Действия при открытии]
    

    |

    +-- (false) -->[Действия при закрытии]

  • `HI-DI`: Настроен на `UI-7`, `Contact Type: NC`. Генерирует `true` при открытии и `false` при закрытии.
  • `RBE` (Report by Exception): Этот стандартный узел Node-RED пропускает сообщение только в том случае, если его `payload` изменился. Это защищает от "дребезга" контактов и лишних срабатываний.
  • `Switch`: Маршрутизирует поток. Если `msg.payload == true`, выполняются действия для открытой двери (включить свет в прихожей, отправить уведомление). Если `msg.payload == false` — для закрытой (поставить на охрану, выключить свет).
  • Пример сообщения на выходе узла `HI-DI` при открытии двери:
    {
    

    "payload": true,

    "topic": "UI-7",

    "device_info": {

    "name": "Геркон входной двери",

    "type": "NC"

    },

    "ts": 1678887100000

    }

    ---

    Инверсия логики: аппаратная или программная?

    Иногда возникают ситуации, когда требуется логика, противоположная той, что предоставляет датчик. Классический сценарий: у вас есть датчик только с NC-выходом, а для решения конкретной задачи вам нужен сигнал, который становится `true` именно в состоянии покоя. Или наоборот.

    Существует два подхода к решению этой задачи: аппаратный и программный.

    Аппаратный способ (устаревший)

    Этот метод предполагает использование дополнительного компонента — миниатюрного промежуточного реле.

    * В состоянии покоя NC-датчик замкнут, на катушку реле подается питание, реле срабатывает. Мы снимаем сигнал с его NO-контактов, которые теперь замкнуты.

    * При срабатывании датчик размыкается, катушка реле обесточивается. Его NO-контакты возвращаются в разомкнутое состояние.

    Недостатки этого подхода очевидны:

    Программный способ (предпочтительный)

    Платформа HI и среда Node-RED позволяют решать эту задачу гораздо элегантнее, без вмешательства в "железо".

    Предположим, у нас тот же NC-датчик на `UI-7`. В покое он выдает `false`, при срабатывании `true` (после нормализации в `HI-DI`). А нам нужно, чтобы `true` был, когда дверь закрыта (например, для логики "всё закрыто, можно спать").

    Просто добавьте после узла `HI-DI` узел `Function`:

    Код в узле `Function`:
    // Этот код инвертирует булево значение в msg.payload
    

    // true -> false

    // false -> true

    msg.payload = !msg.payload;

    return msg;

    Всего одна строка кода! Теперь, если `HI-DI` пришлет `true` (дверь открыта), `Function` превратит это в `false`. А если `HI-DI` пришлет `false` (дверь закрыта), на выходе `Function` мы получим `true`.

    Сравнение подходов:

    | Критерий | Аппаратная инверсия (реле) | Программная инверсия (Node-RED) |

    | ----------------- | --------------------------- | ----------------------------------------------- |

    | Гибкость | Низкая. Требует переключения проводов. | Высокая. Логика меняется за 10 секунд в коде. |

    | Стоимость | Дополнительные затраты на компоненты. | Нулевая. Используются встроенные возможности. |

    | Надежность | Ниже. Дополнительный механический элемент. | Выше. Нет дополнительных точек отказа. |

    | Обслуживание | Сложнее. Нужно искать реле в щите. | Просто. Логика видна и документирована в потоке. |

    Вывод: Всегда отдавайте предпочтение программной инверсии и нормализации логики. Это быстрее, дешевле, надежнее и соответствует современной парадигме "Software-Defined" систем.

    ---

    Итоги и лучшие практики

    В этом уроке мы рассмотрели одно из самых базовых, но критически важных понятий в автоматизации — «сухой контакт» и его разновидности. Правильное понимание и применение этой концепции напрямую влияет на надежность, безопасность и логичность вашей системы.

    📋 Ключевые понятия:

    🔗 Связанный материал:

    > Знания из этого урока являются основой для построения систем охранной сигнализации. Подробно этот процесс будет разобран в модуле COURSE-07-M01 «Проектирование систем безопасности».

    Лучшие практики инсталлятора

  • Всегда используйте NC-датчики для систем безопасности. При проектировании охранных систем, контроля доступа, пожарной сигнализации или мониторинга критических параметров (например, положения запорной арматуры) без компромиссов выбирайте устройства с нормально закрытыми контактами. Это единственный способ обеспечить отказоустойчивость.
  • Используйте программную нормализацию в Node-RED. Не бойтесь инверсии логики. Используйте возможности узлов `HI-DI` или простых `Function` для приведения всех сигналов к единому стандарту в рамках вашего проекта. Это делает потоки чистыми, понятными и легко поддерживаемыми.
  • Проверяйте датчики перед монтажом. Не доверяйте слепо маркировке. Перед установкой датчика всегда уделите минуту, чтобы проверить тип его контактов с помощью мультиметра в режиме «прозвонки» (измерения сопротивления).
  • * Проверка NO-контакта: В покое мультиметр покажет обрыв (бесконечное сопротивление). При срабатывании датчика — покажет короткое замыкание (сопротивление близко к 0 Ом).

    * Проверка NC-контакта: В покое мультиметр покажет короткое замыкание. При срабатывании — покажет обрыв.

    * Это простое действие сэкономит вам часы поиска неисправностей на уже смонтированной системе.

    Что дальше

    Мы разобрались, как работать с простыми бинарными состояниями `включено/выключено`. Однако мир датчиков гораздо богаче. В следующем уроке мы перейдем от дискретных сигналов к аналоговым и научимся работать с плавными изменениями физических величин, таких как температура, влажность и уровень освещенности, используя аналоговые входы контроллера.