Подключение дискретных входов
Секция 1: Основы дискретных входов типа «сухой контакт»
🔗 Связанный материал: Для общего понимания архитектуры входов, обратитесь к предыдущему уроку: «Обзор универсальных входов контроллера».
В мире автоматизации дискретный сигнал — это простейший, но один из самых распространенных способов получения информации от окружающего мира. Он имеет всего два состояния: «включено» или «выключено», «замкнуто» или «разомкнуто», «истина» или «ложь». Наиболее часто для передачи такого сигнала используется технология «сухой контакт» (Dry Contact).
> 📋 Ключевые понятия:
> Сухой контакт — это тип электрического выхода, который представляет собой пару контактов, не имеющих внутреннего источника питания. По сути, это изолированный переключатель (реле), который замыкает или размыкает внешнюю электрическую цепь, предоставленную управляющим устройством (в нашем случае, контроллером HI). Он не передает ни ток, ни напряжение — только состояние «замкнуто/разомкнуто».
Это принципиально отличает его от «мокрого контакта» (wet contact), который сам подает напряжение на свои выводы при срабатывании. Работа с «сухими контактами» значительно безопаснее и универсальнее, так как напряжение и ток в сигнальной цепи определяются контроллером, а не датчиком.
Примеры источников сигнала «сухой контакт»
Вы будете постоянно сталкиваться с этими устройствами в своей практике:
- Классические выключатели и кнопки: Настенные выключатели (клавишные, кнопочные без фиксации) для управления освещением или сценариями.
- Герконы (магнитоконтактные извещатели): Устанавливаются на окна и двери для определения их статуса (открыто/закрыто).
- Датчики движения с релейным выходом: Многие профессиональные датчики движения (инфракрасные, микроволновые) имеют выход типа «сухой контакт», который замыкается при обнаружении движения.
- Датчики протечки воды: Простейшие датчики состоят из двух электродов; при попадании на них воды цепь замыкается. Более сложные модели имеют встроенное реле.
- Релейные выходы другого оборудования: Выходы пожарной сигнализации, охранных систем, выходы аварии от инженерного оборудования (котлов, насосов, вентиляционных установок).
Схемотехника универсального входа контроллера
Чтобы понять, как контроллер HI обрабатывает сигнал от «сухого контакта», необходимо заглянуть в его внутреннюю схемотехнику. Каждый универсальный вход (UI) в режиме дискретного ввода работает по следующему принципу:
Концептуальная схема работы дискретного входаВнутри контроллера к сигнальному входу `Ui` через резистор подключен источник питания небольшого напряжения (например, +3.3В). Этот резистор называется подтягивающим резистором (pull-up resistor). Второй провод от вашего датчика («сухого контакта») подключается к общей земле (`GND`) контроллера.
Рассмотрим два состояния:
Роль подтягивающего резистора критически важна. Без него в разомкнутом состоянии вход `Ui` был бы «подвисшим в воздухе» (floating state), что делало бы его крайне уязвимым к электромагнитным помехам и наводкам, приводя к хаотичным ложным срабатываниям. Pull-up резистор обеспечивает стабильное и предсказуемое состояние входа в любой момент времени.
---
Секция 2: Физическое подключение к клеммам контроллера
Правильное физическое подключение — залог стабильной работы системы. Ошибки, допущенные на этом этапе, являются наиболее частой причиной проблем при пусконаладке.
> 💡 Подсказка: Используйте витую пару (например, UTP Cat5e) для подключения удаленных дискретных датчиков. Одна пара (например, синий и бело-синий провод) используется для сигнала и земли (`Ui` + `GND`), а свободные пары в том же кабеле можно задействовать для других датчиков в той же комнате. Это значительно сокращает количество прокладываемых кабелей и упрощает монтаж.
Схема подключения двухпроводного датчика
Для подключения простого двухпроводного датчика, такого как геркон на двери или настенная кнопка, вам понадобятся два терминала на контроллере HI:
- Ui (Universal Input): Один из 22 универсальных входов.
- GND (Ground): Клемма общей земли.
* Один проводник от датчика подключите к выбранному универсальному входу, например, `UI08`.
* Второй проводник от датчика подключите к любой свободной клемме `GND`.
//====== WIRING-DRYCONTACT-001: Подключение геркона к UI08 ======
(Датчик открытия двери: Геркон) [Контроллер HI]
+---------+
(Клемма 1)-- провод 1 --+------------------> (Клемма UI08)
| |
(Клемма 2)-- провод 2 --+------------------> (Клемма GND)
+---------+
Рекомендации по выбору кабеля и монтажу
- Сечение: Для сигнальных цепей «сухого контакта» ток очень мал (микроамперы), поэтому можно использовать кабель малого сечения, например, 0.22 мм² (AWG 24) или 0.5 мм² (AWG 20). Стандартная витая пара для сетей Ethernet подходит идеально.
- Экранирование: В условиях сильных электромагнитных помех (рядом с силовыми кабелями, двигателями, люминесцентными лампами) рекомендуется использовать экранированную витую пару (FTP, S/FTP). Экран кабеля подключается к клемме `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»
Этот узел является вашим основным инструментом для работы со всеми типами входов контроллера.
Настройка режима работы входа
В окне конфигурации узла вы увидите несколько ключевых параметров:
- Имя (Name): Задайте осмысленное имя входу, например, «Кнопка в гостиной» или «Геркон входной двери». Это имя будет отображаться под узлом в редакторе.
- Номер входа (Input Number): Выберите из выпадающего списка физический номер клеммы, к которой вы подключили датчик (например, `Input 8` для клеммы `UI08`).
- Режим работы (Mode): Здесь вы определяете, как контроллер будет обрабатывать сигнал. Для нашей задачи выберите опцию «Дискретный вход (Сухой контакт)».
После выбора этого режима появятся дополнительные настройки, специфичные для дискретных сигналов.
Конфигурация логики и подавления дребезга
- Инвертировать логику (Invert Logic): Этот флажок критически важен при работе с NC-датчиками.
* Для NC-датчиков (охранные герконы) флажок должен быть установлен. В нормальном, замкнутом состоянии узел будет генерировать `msg.payload = false`. При срабатывании (размыкании) он сгенерирует `msg.payload = true`, что более интуитивно для обработки тревожных событий.
- Подавление дребезга, мс (Debounce): Механические контакты кнопок и реле при замыкании и размыкании несколько раз очень быстро отскакивают друг от друга, создавая серию ложных импульсов. Этот эффект называется дребезгом контактов. Функция `Debounce` позволяет отфильтровать эти ложные срабатывания. Она работает как таймер: после первого изменения состояния входа узел ждет указанное количество миллисекунд. Если за это время состояние не изменилось обратно, узел генерирует сообщение.
* Для настенных кнопок и выключателей: Рекомендуемое значение — `50-100` мс. Этого достаточно, чтобы отсечь дребезг, но не создать заметной для пользователя задержки.
* Значение `0` отключает подавление дребезга.
Анализ исходящего сообщения (msg)
После настройки и развертывания потока узел `HI-universal-input` будет генерировать объект `msg` при каждом изменении состояния подключенного датчика (с учетом debounce).
Подключите узел `Debug` к выходу `HI-universal-input`, чтобы увидеть его сообщения в панели отладки.
Структура сообщения:- `msg.payload` (boolean): Основные данные. Содержит `true` или `false` в зависимости от состояния входа и настройки инверсии.
- `msg.topic` (string): Содержит информацию, которая может быть полезна для маршрутизации. Часто это имя, которое вы задали узлу.
При нажатии на кнопку (NO-контакт):
{
"payload": true,
"topic": "Main Button",
"_msgid": "a1b2c3d4.e5f6a7"
}
При отпускании кнопки:
{
"payload": false,
"topic": "Main Button",
"_msgid": "b2c3d4e5.f6a7b8"
}
Эти простые сообщения `true`/`false` являются строительными блоками для создания любых сценариев автоматизации, от простого включения света до сложных алгоритмов управления зданием.
---
Секция 4: Практический пример: подключение кнопки для управления светом
Давайте применим полученные знания на практике и создадим классический сценарий: управление одной группой освещения с помощью одной кнопки без фиксации (тактовой кнопки). Каждое нажатие будет менять состояние света на противоположное (включено -> выключено, выключено -> включено).
> ⚠️ Внимание: Неправильная настройка `Debounce` (дребезга) для кнопок может приводить к ложным многократным срабатываниям. Если вы видите, что одно нажатие на кнопку иногда включает и тут же выключает свет, увеличьте значение `Debounce` до 100 мс.
Пошаговая инструкция
Шаг 1: Физическое подключениеНам понадобится три узла для реализации логики "триггера": `HI-universal-input`, `RBE` и `Function`, а также узел `HI-relay-output` для управления реле.
Логика потока:* Создайте узел, назовите его «Кнопка на кухне».
* Выберите `Input 15`.
* Режим: `Дискретный вход (Сухой контакт)`.
* Инверсия: флажок снят (это NO-кнопка).
* Debounce: `75` мс.
* Найдите узел `rbe` (в категории «function»). Он пропускает сообщение только в том случае, если его `payload` изменился.
* Подключите выход узла «Кнопка на кухне» к входу `rbe`.
* Это нужно, чтобы наша логика срабатывала только в момент нажатия или отпускания, а не постоянно, пока кнопка зажата.
* Этот узел будет реализовывать основную логику переключения. Нам нужно, чтобы только нажатие (переход в `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;
* Создайте узел, назовите «Свет на кухне».
* Выберите `Relay 3`.
* Подключите выход узла `Function` к входу этого узла. Он будет получать `true` или `false` и соответственно включать или выключать реле.
Шаг 3: ОтладкаДля проверки каждого шага используйте узел `Debug`:
- Подключите один `Debug` после узла `HI-universal-input`. Вы должны видеть `true` при нажатии и `false` при отпускании.
- Подключите второй `Debug` после узла `Function`. Вы должны видеть, как при каждом нажатии на кнопку `payload` меняется: `true`, `false`, `true`, `false`...
После завершения и тестирования не забудьте нажать кнопку Deploy.
Усложнение логики (анонс):Эта простая схема является основой. В продвинутых курсах мы рассмотрим, как с помощью этой же кнопки реализовать управление диммированием (яркостью) по длинному нажатию, используя возможности контекста и таймеров в Node-RED.
---
Секция 5: Диагностика и типовые неисправности
Даже в такой простой схеме, как подключение кнопки, могут возникнуть проблемы. Умение быстро их диагностировать — ключевой навык инсталлятора.
Чек-лист для быстрой проверки
Если датчик или кнопка не работают, последовательно проверьте следующие пункты:
* [ ] Надежность контактов: Проверьте, что провода надежно зажаты в клеммах как на контроллере, так и на датчике. Слегка потяните за провод — он не должен выдергиваться.
* [ ] Правильность клемм: Убедитесь, что вы использовали клеммы `Ui` и `GND`, а не, например, `Ui` и `+24V`.
* [ ] Целостность кабеля: Если есть подозрение на обрыв, используйте мультиметр в режиме «прозвонки» (continuity test), чтобы проверить целостность каждого проводника от контроллера до датчика.
* [ ] Номер входа: Проверьте в Node-RED, что в узле `HI-universal-input` выбран тот же номер входа (`Input X`), к которому вы физически подключили кабель (`UI-X`).
* [ ] Режим работы: Убедитесь, что выбран режим «Дискретный вход».
* [ ] Инверсия логики: Правильно ли настроен флажок инверсии для вашего NO/NC датчика? Попробуйте изменить его на противоположный и проверьте результат.
* [ ] Развертывание (Deploy): Нажали ли вы кнопку `Deploy` после внесения изменений в поток?
* [ ] Отключите всю сложную логику (`rbe`, `function`). Подключите узел `Debug` напрямую к выходу `HI-universal-input`. Срабатывает ли датчик? Видите ли вы сообщения `true`/`false` в панели отладки? Если да, проблема кроется в последующей логике. Если нет — проблема в физике или базовой настройке узла.
Типовые проблемы и их решение
- Проблема: Вход постоянно показывает `true` или `false` и не реагирует на датчик.
* Причина 2: Неисправность самого датчика. Попробуйте заменить датчик на заведомо исправный или просто замкните провода пинцетом прямо на клеммах контроллера. Если вход сработает, проблема в датчике или кабеле.
- Проблема: «Плавающее» состояние, ложные срабатывания.
* Причина 2 (редко для HI): Неисправность внутреннего подтягивающего резистора. Это аппаратная проблема, требующая диагностики в сервис-центре. Если вы подозреваете это, попробуйте переключить датчик на другой универсальный вход.
Краткое резюме
Процесс подключения дискретного входа всегда состоит из трех простых шагов:
Освоив этот базовый навык, вы сможете подключать к контроллеру подавляющее большинство датчиков и кнопок, используемых в современных системах умного дома и автоматизации зданий.