ГлавнаяАкадемияМонтаж и пусконаладка контроллера → Подключение дискретных входов

Подключение дискретных входов

Урок 1 · Монтаж и пусконаладка контроллера · 15 мин · theory

Секция 1: Основы дискретных входов типа «сухой контакт»

🔗 Связанный материал: Для общего понимания архитектуры входов, обратитесь к предыдущему уроку: «Обзор универсальных входов контроллера».

В мире автоматизации дискретный сигнал — это простейший, но один из самых распространенных способов получения информации от окружающего мира. Он имеет всего два состояния: «включено» или «выключено», «замкнуто» или «разомкнуто», «истина» или «ложь». Наиболее часто для передачи такого сигнала используется технология «сухой контакт» (Dry Contact).

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

> Сухой контакт — это тип электрического выхода, который представляет собой пару контактов, не имеющих внутреннего источника питания. По сути, это изолированный переключатель (реле), который замыкает или размыкает внешнюю электрическую цепь, предоставленную управляющим устройством (в нашем случае, контроллером HI). Он не передает ни ток, ни напряжение — только состояние «замкнуто/разомкнуто».

Это принципиально отличает его от «мокрого контакта» (wet contact), который сам подает напряжение на свои выводы при срабатывании. Работа с «сухими контактами» значительно безопаснее и универсальнее, так как напряжение и ток в сигнальной цепи определяются контроллером, а не датчиком.

Примеры источников сигнала «сухой контакт»

Вы будете постоянно сталкиваться с этими устройствами в своей практике:

Схемотехника универсального входа контроллера

Чтобы понять, как контроллер HI обрабатывает сигнал от «сухого контакта», необходимо заглянуть в его внутреннюю схемотехнику. Каждый универсальный вход (UI) в режиме дискретного ввода работает по следующему принципу:

Концептуальная схема работы дискретного входа

Внутри контроллера к сигнальному входу `Ui` через резистор подключен источник питания небольшого напряжения (например, +3.3В). Этот резистор называется подтягивающим резистором (pull-up resistor). Второй провод от вашего датчика («сухого контакта») подключается к общей земле (`GND`) контроллера.

Рассмотрим два состояния:

  • Контакт разомкнут (Open): Когда ваш выключатель или геркон находится в разомкнутом состоянии, ток через него не течет. Благодаря подтягивающему резистору, напряжение на входе `Ui` равно напряжению внутреннего источника питания (+3.3В). Процессор контроллера интерпретирует это как высокий логический уровень, или логическую «1» (TRUE).
  • Контакт замкнут (Closed): Когда вы нажимаете кнопку или геркон замыкается, он создает прямое соединение между входом `Ui` и землей `GND`. Ток начинает течь от источника +3.3В через подтягивающий резистор на землю. Поскольку сопротивление замкнутого контакта и проводов пренебрежимо мало по сравнению с сопротивлением подтягивающего резистора, напряжение на входе `Ui` падает почти до нуля (до уровня `GND`). Процессор интерпретирует это как низкий логический уровень, или логический «0» (FALSE).
  • Роль подтягивающего резистора критически важна. Без него в разомкнутом состоянии вход `Ui` был бы «подвисшим в воздухе» (floating state), что делало бы его крайне уязвимым к электромагнитным помехам и наводкам, приводя к хаотичным ложным срабатываниям. Pull-up резистор обеспечивает стабильное и предсказуемое состояние входа в любой момент времени.

    ---

    Секция 2: Физическое подключение к клеммам контроллера

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

    > 💡 Подсказка: Используйте витую пару (например, UTP Cat5e) для подключения удаленных дискретных датчиков. Одна пара (например, синий и бело-синий провод) используется для сигнала и земли (`Ui` + `GND`), а свободные пары в том же кабеле можно задействовать для других датчиков в той же комнате. Это значительно сокращает количество прокладываемых кабелей и упрощает монтаж.

    Схема подключения двухпроводного датчика

    Для подключения простого двухпроводного датчика, такого как геркон на двери или настенная кнопка, вам понадобятся два терминала на контроллере HI:

    Порядок подключения:
  • Подготовьте кабель: Зачистите концы проводников примерно на 5-7 мм. Если вы используете многожильный провод, обязательно обожмите его наконечником-гильзой (НШВИ) для обеспечения надежного контакта в винтовой клемме.
  • Подключите к контроллеру:
  • * Один проводник от датчика подключите к выбранному универсальному входу, например, `UI08`.

    * Второй проводник от датчика подключите к любой свободной клемме `GND`.

  • Подключите к датчику: Подключите те же проводники к клеммам датчика. Для «сухого контакта» полярность не имеет значения.
  • ASCII-схема подключения геркона:
    //====== WIRING-DRYCONTACT-001: Подключение геркона к UI08 ======
    
    

    (Датчик открытия двери: Геркон) [Контроллер HI]

    +---------+

    (Клемма 1)-- провод 1 --+------------------> (Клемма UI08)

    | |

    (Клемма 2)-- провод 2 --+------------------> (Клемма GND)

    +---------+

    Рекомендации по выбору кабеля и монтажу

    Подключение NO и NC датчиков

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

    | Тип контакта | Описание | Состояние на входе контроллера (при срабатывании) | Применение |

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

    | NO (Normally Open) | Нормально-разомкнутый. Контакты реле разомкнуты в нормальном состоянии. | Замыкается на `GND`. Логика: `1 -> 0`. | Кнопки без фиксации, датчики движения (срабатывание = замыкание), звонки. |

    | NC (Normally Closed) | Нормально-замкнутый. Контакты реле замкнуты в нормальном состоянии. | Размыкается. Логика: `0 -> 1`. | Охранные датчики (герконы), кнопки аварийной остановки. |

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

    Физически подключение NO и NC датчиков идентично. Логическое различие их работы компенсируется программной настройкой в среде Node-RED, которую мы рассмотрим в следующей секции.

    Подключение нескольких датчиков

    Вы можете существенно сэкономить время и упростить монтаж, подключая несколько датчиков, расположенных рядом, к одной общей клемме `GND` контроллера. Например, три геркона на окнах в одной комнате могут быть подключены к входам `UI10`, `UI11`, `UI12`, при этом их вторые провода объединяются и подключаются одним проводником к ближайшей клемме `GND`.

    ---

    Секция 3: Конфигурация входа в среде Node-RED

    После завершения физического монтажа необходимо «объяснить» контроллеру, как интерпретировать электрические сигналы, поступающие на его клеммы. Это делается в среде визуального программирования Node-RED с помощью специального узла `HI-universal-input`.

    Обзор узла «HI-universal-input»

    Этот узел является вашим основным инструментом для работы со всеми типами входов контроллера.

  • Найдите узел `HI-universal-input` в палитре узлов Node-RED слева, обычно в категории «HI Platform».
  • Перетащите его на рабочее поле.
  • Дважды щелкните по узлу, чтобы открыть окно его конфигурации.
  • Настройка режима работы входа

    В окне конфигурации узла вы увидите несколько ключевых параметров:

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

    Конфигурация логики и подавления дребезга

    * Для NO-датчиков (кнопки, большинство датчиков движения) флажок должен быть снят. При срабатывании (замыкании) узел будет генерировать `msg.payload = true`.

    * Для NC-датчиков (охранные герконы) флажок должен быть установлен. В нормальном, замкнутом состоянии узел будет генерировать `msg.payload = false`. При срабатывании (размыкании) он сгенерирует `msg.payload = true`, что более интуитивно для обработки тревожных событий.

    * Для медленных датчиков (герконы, датчики протечки): Можно установить небольшое значение, например, `25` мс.

    * Для настенных кнопок и выключателей: Рекомендуемое значение — `50-100` мс. Этого достаточно, чтобы отсечь дребезг, но не создать заметной для пользователя задержки.

    * Значение `0` отключает подавление дребезга.

    Анализ исходящего сообщения (msg)

    После настройки и развертывания потока узел `HI-universal-input` будет генерировать объект `msg` при каждом изменении состояния подключенного датчика (с учетом debounce).

    Подключите узел `Debug` к выходу `HI-universal-input`, чтобы увидеть его сообщения в панели отладки.

    Структура сообщения: Пример `msg` от кнопки, подключенной к `UI08` (имя узла "Main Button"):

    При нажатии на кнопку (NO-контакт):

    {
    

    "payload": true,

    "topic": "Main Button",

    "_msgid": "a1b2c3d4.e5f6a7"

    }

    При отпускании кнопки:

    {
    

    "payload": false,

    "topic": "Main Button",

    "_msgid": "b2c3d4e5.f6a7b8"

    }

    Эти простые сообщения `true`/`false` являются строительными блоками для создания любых сценариев автоматизации, от простого включения света до сложных алгоритмов управления зданием.

    ---

    Секция 4: Практический пример: подключение кнопки для управления светом

    Давайте применим полученные знания на практике и создадим классический сценарий: управление одной группой освещения с помощью одной кнопки без фиксации (тактовой кнопки). Каждое нажатие будет менять состояние света на противоположное (включено -> выключено, выключено -> включено).

    > ⚠️ Внимание: Неправильная настройка `Debounce` (дребезга) для кнопок может приводить к ложным многократным срабатываниям. Если вы видите, что одно нажатие на кнопку иногда включает и тут же выключает свет, увеличьте значение `Debounce` до 100 мс.

    Пошаговая инструкция

    Шаг 1: Физическое подключение
  • Возьмите тактовую кнопку (например, настенный выключатель без фиксации).
  • Подключите один ее вывод к свободной клемме универсального входа, например, `UI15`.
  • Подключите второй вывод кнопки к клемме `GND`.
  • Убедитесь, что группа света, которой вы хотите управлять, подключена к одному из релейных выходов контроллера, например, `RL03`. Это подключение было рассмотрено в предыдущих модулях.
  • Шаг 2: Создание потока (flow) в Node-RED

    Нам понадобится три узла для реализации логики "триггера": `HI-universal-input`, `RBE` и `Function`, а также узел `HI-relay-output` для управления реле.

    Логика потока:
  • `HI-universal-input` (Кнопка):
  • * Создайте узел, назовите его «Кнопка на кухне».

    * Выберите `Input 15`.

    * Режим: `Дискретный вход (Сухой контакт)`.

    * Инверсия: флажок снят (это NO-кнопка).

    * Debounce: `75` мс.

  • `RBE` (Фильтр):
  • * Найдите узел `rbe` (в категории «function»). Он пропускает сообщение только в том случае, если его `payload` изменился.

    * Подключите выход узла «Кнопка на кухне» к входу `rbe`.

    * Это нужно, чтобы наша логика срабатывала только в момент нажатия или отпускания, а не постоянно, пока кнопка зажата.

  • `Function` (Триггер):
  • * Этот узел будет реализовывать основную логику переключения. Нам нужно, чтобы только нажатие (переход в `true`), а не отпускание, меняло состояние света.

    * Подключите выход `rbe` к входу `Function`.

    * Вставьте следующий код:

        // Срабатываем только на нажатие (когда приходит true)

    if (msg.payload === true) {

    // Получаем текущее состояние света из контекста потока.

    // Если там ничего нет, считаем, что свет выключен (false).

    let currentState = flow.get('light_kitchen_state') || false;

    // Инвертируем состояние: было true -> станет false, было false -> станет true.

    let newState = !currentState;

    // Сохраняем новое состояние обратно в контекст.

    flow.set('light_kitchen_state', newState);

    // Передаем новое состояние (true или false) дальше на узел реле.

    msg.payload = newState;

    return msg;

    }

    // Если пришло false (отпускание кнопки), ничего не делаем.

    return null;

  • `HI-relay-output` (Реле света):
  • * Создайте узел, назовите «Свет на кухне».

    * Выберите `Relay 3`.

    * Подключите выход узла `Function` к входу этого узла. Он будет получать `true` или `false` и соответственно включать или выключать реле.

    Шаг 3: Отладка

    Для проверки каждого шага используйте узел `Debug`:

    После завершения и тестирования не забудьте нажать кнопку Deploy.

    Усложнение логики (анонс):

    Эта простая схема является основой. В продвинутых курсах мы рассмотрим, как с помощью этой же кнопки реализовать управление диммированием (яркостью) по длинному нажатию, используя возможности контекста и таймеров в Node-RED.

    ---

    Секция 5: Диагностика и типовые неисправности

    Даже в такой простой схеме, как подключение кнопки, могут возникнуть проблемы. Умение быстро их диагностировать — ключевой навык инсталлятора.

    Чек-лист для быстрой проверки

    Если датчик или кнопка не работают, последовательно проверьте следующие пункты:

  • Физические соединения:
  • * [ ] Надежность контактов: Проверьте, что провода надежно зажаты в клеммах как на контроллере, так и на датчике. Слегка потяните за провод — он не должен выдергиваться.

    * [ ] Правильность клемм: Убедитесь, что вы использовали клеммы `Ui` и `GND`, а не, например, `Ui` и `+24V`.

    * [ ] Целостность кабеля: Если есть подозрение на обрыв, используйте мультиметр в режиме «прозвонки» (continuity test), чтобы проверить целостность каждого проводника от контроллера до датчика.

  • Программная конфигурация:
  • * [ ] Номер входа: Проверьте в Node-RED, что в узле `HI-universal-input` выбран тот же номер входа (`Input X`), к которому вы физически подключили кабель (`UI-X`).

    * [ ] Режим работы: Убедитесь, что выбран режим «Дискретный вход».

    * [ ] Инверсия логики: Правильно ли настроен флажок инверсии для вашего NO/NC датчика? Попробуйте изменить его на противоположный и проверьте результат.

    * [ ] Развертывание (Deploy): Нажали ли вы кнопку `Deploy` после внесения изменений в поток?

  • Использование `Debug` узла:
  • * [ ] Отключите всю сложную логику (`rbe`, `function`). Подключите узел `Debug` напрямую к выходу `HI-universal-input`. Срабатывает ли датчик? Видите ли вы сообщения `true`/`false` в панели отладки? Если да, проблема кроется в последующей логике. Если нет — проблема в физике или базовой настройке узла.

    Типовые проблемы и их решение

    * Причина 1: Короткое замыкание или обрыв в кабеле. «Прозвоните» кабель.

    * Причина 2: Неисправность самого датчика. Попробуйте заменить датчик на заведомо исправный или просто замкните провода пинцетом прямо на клеммах контроллера. Если вход сработает, проблема в датчике или кабеле.

    * Причина 1: Электромагнитные наводки. Ваш сигнальный кабель проложен слишком близко к силовым линиям. Переложите кабель или используйте экранированный кабель (FTP).

    * Причина 2 (редко для HI): Неисправность внутреннего подтягивающего резистора. Это аппаратная проблема, требующая диагностики в сервис-центре. Если вы подозреваете это, попробуйте переключить датчик на другой универсальный вход.

    Краткое резюме

    Процесс подключения дискретного входа всегда состоит из трех простых шагов:

  • Подключение: Физически соединить датчик с клеммами `Ui` и `GND`.
  • Настройка: Сконфигурировать узел `HI-universal-input` в Node-RED, указав номер входа, режим, инверсию и debounce.
  • Проверка: Использовать узел `Debug` для проверки корректности получаемых сигналов, после чего встраивать вход в логику автоматизации.
  • Освоив этот базовый навык, вы сможете подключать к контроллеру подавляющее большинство датчиков и кнопок, используемых в современных системах умного дома и автоматизации зданий.