SCN-SAFETY-003: Контроль датчиков дыма/газа
Архитектура системы контроля дыма и газа
Разработка надежной системы пожарной безопасности и контроля утечек газа начинается с правильного выбора компонентов и проектирования архитектуры. В экосистеме платформы HI контроллер выступает центральным ядром, которое агрегирует информацию от различных датчиков, анализирует ее и принимает решения по незамедлительному реагированию. Это позволяет создать комплексную, а не разрозненную систему безопасности.
> ℹ️ Информация: Установка датчиков дыма и газа регулируется национальными и международными стандартами (например, EN 54, а также локальными строительными нормами и правилами). Всегда сверяйтесь с актуальной нормативной документацией перед проектированием и монтажом.
Классификация датчиков
Датчики, используемые для обнаружения пожароопасных ситуаций и утечек газа, делятся на несколько основных типов, каждый из которых имеет свою область применения:
- Дымовые оптические (фотоэлектрические): Наиболее распространенный тип. Реагируют на видимые частицы дыма, которые рассеивают инфракрасный луч внутри камеры датчика. Эффективны для обнаружения тлеющих пожаров, которые создают много дыма (например, возгорание мебели, ПВХ-изоляции).
- Дымовые ионизационные: Содержат небольшое количество радиоактивного изотопа, который ионизирует воздух в камере. Попадание частиц дыма нарушает этот процесс, что вызывает тревогу. Более чувствительны к "чистым" пожарам с малым количеством дыма и открытым пламенем (например, горение древесины, бумаги).
- Газовые (CO - угарный газ): Обнаруживают смертельно опасный угарный газ, который не имеет цвета и запаха и образуется при неполном сгорании топлива (в котлах, каминах, газовых колонках). Являются обязательными для установки в помещениях с таким оборудованием.
- Газовые (CH₄ - метан, природный газ): Реагируют на утечку бытового газа, используемого в плитах и системах отопления. Устанавливаются в кухнях и котельных в верхней части помещения, так как метан легче воздуха.
- Газовые (LPG - сжиженный нефтяной газ): Предназначены для обнаружения пропана/бутана. Так как эти газы тяжелее воздуха, датчики устанавливаются в нижней части помещения (15-30 см от пола).
Способы интеграции с контроллером HI
Выбор способа подключения датчика к контроллеру определяет надежность, информативность и гибкость всей системы.
| Способ подключения | Преимущества | Недостатки | Тип сигнала |
| ------------------------ | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| "Сухой контакт" | Простота, универсальность, совместимость с любыми пожарными панелями и датчиками с релейным выходом. | Низкая информативность (только "Норма" / "Тревога"). Невозможность удаленной диагностики и получения сервисных данных (запыленность, напряжение). | Дискретный вход (UI) контроллера HI. Сигнал: замыкание/размыкание цепи. |
| Цифровая шина RS-485 (Modbus RTU) | Высокая информативность: передача нескольких статусов ("Тревога Дым", "Тревога Газ", "Неисправность", "Тест"), сервисных данных. Возможность контроля целостности линии связи. | Требует более сложной настройки в Node-RED. Необходимость соблюдения правил монтажа шины (топология, терминирование). | Подключение к порту RS-485 контроллера HI. |
| Беспроводные шлюзы (Zigbee, Z-Wave) | Отсутствие проводов, простота монтажа в готовом ремонте. | Зависимость от батареек в датчиках, потенциальные помехи в радиоканале. Требуется дополнительный шлюз для преобразования протокола в MQTT. | Контроллер HI получает данные по MQTT от шлюза (например, Zigbee2MQTT). |
Для критически важных систем безопасности рекомендуемым методом является подключение по шине RS-485 (Modbus RTU), так как он обеспечивает наилучший баланс между информативностью, надежностью и возможностью контроля состояния самого датчика.
Централизованный подход и размещение
Контроллер HI выполняет роль центрального процессора безопасности. В отличие от автономных датчиков, которые могут только издавать звуковой сигнал, контроллер реализует комплексные сценарии:
- Дымовые: Устанавливаются на потолке в центре комнаты, минимум в 50 см от стен и 15 см от потолочных светильников. Обязательны в спальнях, коридорах, гостиных.
- Газовые (CH₄): На стене, на 30 см ниже потолка и в 1-3 метрах от газового прибора.
- Газовые (CO): На стене, на уровне дыхания человека (около 1.5 метра от пола), в спальнях или вблизи потенциальных источников.
---
Интеграция датчиков по Modbus RTU (RS-485)
Рассмотрим наиболее надежный и информативный способ интеграции — по промышленной шине RS-485 с использованием протокола Modbus RTU. Этот метод позволяет не только получать сигнал тревоги, но и контролировать исправность самого датчика и линии связи.
> ⚠️ Внимание: Перед подключением любых устройств к порту RS-485 контроллера HI, убедитесь, что питание контроллера и блока питания датчиков полностью отключено. Неправильное подключение (переполюсовка, подача 230V) может необратимо повредить как порт контроллера, так и сам датчик.
Подключение и опрос датчика по шине Modbus RTU выполняются аналогично тому, как мы это делали в уроке «Управление вентиляцией по уровню CO₂». Сосредоточьтесь на уникальных для датчика безопасности адресах регистров и Slave ID.
Интерпретация ответа
Узел `Modbus-Getter` при успешном опросе вернет массив булевых значений.
Пример `msg` от узла `Modbus-Getter`:{
"_msgid": "a1b2c3d4.e5f6g7",
"payload": [
false,
false,
true,
false
],
"responseBuffer": {
"data": [
false,
false,
true,
false
],
"buffer": ""
}
}
В данном примере `msg.payload` представляет собой массив, где каждый элемент соответствует состоянию одного дискретного входа (регистра). Согласно гипотетической карте регистров, это можно интерпретировать так:
- `payload[0]` (Адрес 0): Тревога Дым/Газ = `false` (нет тревоги)
- `payload[1]` (Адрес 1): Неисправность датчика = `false` (исправен)
- `payload[2]` (Адрес 2): Повышенная запыленность камеры = `true` (требуется обслуживание)
- `payload[3]` (Адрес 3): Режим тестирования = `false` (нормальный режим)
Эта информация гораздо богаче, чем простой сигнал "Тревога" от "сухого контакта", и позволяет системе проактивно сообщать о необходимости технического обслуживания.
---
Логика обработки тревог в Node-RED
Получение сырых данных от датчика — это только первый шаг. Далее необходимо построить надежную логику, которая будет фильтровать ложные срабатывания, управлять состояниями системы и формировать стандартизированные события для других сценариев.
Фильтрация дребезга и ложных срабатываний
Кратковременные ложные срабатывания могут быть вызваны помехами на линии или внешними факторами (например, пар из ванной). Чтобы от них избавиться, используется узел `rbe` (Report by Exception).
Создание конечного автомата (State Machine)
Для управления сложным состоянием системы безопасности идеально подходит паттерн "Конечный автомат" (FSM). Состояние хранится в контексте потока (flow context), что делает его доступным для всех узлов в рамках текущей вкладки.
Определим возможные состояния:
- `normal`: Все системы в норме.
- `alarm_smoke`: Обнаружен дым.
- `alarm_gas`: Обнаружена утечка газа.
- `fault`: Один из датчиков неисправен или не отвечает.
[Modbus-Getter] -> [Function: Parse] -> [Switch: Event Type] --+-- ('alarm') --> [Change: Set State 'alarm_smoke'] -> [Link Out: To Actions]
|
+-- ('fault') --> [Change: Set State 'fault'] -> [Link Out: To Notifications]
|
+-- ('normal')--> [Change: Set State 'normal']
Узел `Function: Parse`:
Этот узел является сердцем логики. Он анализирует массив данных от Modbus, решает, какое событие произошло, и формирует стандартизированный объект.
/*
Входящий msg.payload от Modbus-Getter: [false, true, false, false]
[Тревога, Неисправность, Запыленность, Тест]
*/
const status = msg.payload;
let event = {
type: "normal",
source: "SENS-SMOKE-02", // ID датчика
details: "All systems clear",
ts: Date.now()
};
if (status[1] || status[2]) { // Неисправность или Запыленность
event.type = "fault";
event.details = "Sensor requires maintenance or is faulty.";
}
if (status[0]) { // Тревога
event.type = "alarm_smoke";
event.details = "Smoke detected!";
}
// Устанавливаем топик для дальнейшей маршрутизации
msg.topic = "safety/event/" + event.type;
msg.payload = event;
// Сохраняем текущее состояние в контекст потока
flow.set("safety_status_" + event.source, event.type);
node.status({fill:"blue", shape:"dot", text: "State: " + event.type});
return msg;
Стандартизированный объект события `msg.payload`:
{
"type": "alarm_smoke",
"source": "SENS-SMOKE-02",
"details": "Smoke detected!",
"ts": 1678886400000
}
Такой стандартизированный формат позволяет легко обрабатывать события от разных типов датчиков в последующих сценариях. Узел `Switch` затем может маршрутизировать это сообщение в зависимости от `msg.payload.type` на соответствующий поток действий. Использование контекста потока (`flow.set`) позволяет в любой момент времени знать текущий статус каждого датчика, что полезно для логики агрегации и визуализации.
---
Сценарии немедленного реагирования
ценарии немедленного реагирования
Как только система перешла в состояние `alarm_smoke` или `alarm_gas`, она должна выполнить ряд немедленных действий с наивысшим приоритетом, направленных на минимизацию ущерба и обеспечение безопасности людей.
> 🔗 Связанный материал: Логика управления приоритетами подробно рассматривается в модуле COURSE-07-M02. Рекомендуется повторить урок об использовании глобального контекста для управления общим состоянием системы, что позволяет блокировать низкоприоритетные сценарии.
Приоритет сценария "Пожар" и логика Hard Override
Сценарий "Пожар" является сценарием наивысшего приоритета. При его активации в глобальную переменную контекста должно быть установлено соответствующее значение, например, `global.set("System.Mode", "EMERGENCY_FIRE")`.
Для обеспечения надежной блокировки всех процессов внедряется механизм Hard Override — принудительное прерывание.
Алгоритм реализации Hard Override:// Пример проверки в начале любого низкоприоритетного сценария
const systemMode = global.get("System.Mode") || "normal";
if (systemMode.startsWith("EMERGENCY")) {
node.warn("Execution blocked by emergency mode: " + systemMode);
return null; // Hard Override: Прекратить выполнение потока
}
//... остальная логика сценария
Управление электропитанием
Главная задача — обесточить объект, чтобы предотвратить короткие замыкания и возгорание электропроводки.
Перекрытие газа
При получении события `alarm_gas` (а также `alarm_smoke` для перестраховки), система должна немедленно перекрыть подачу газа.
- Исполнительное устройство: Используется электромагнитный клапан с сервоприводом, установленный на газовой трубе после ручного крана.
- Управление: Клапан обычно управляется подачей напряжения 12V/24V или сигналом "сухой контакт". Контроллер HI активирует одно из своих реле (выход `RELAY`), которое подает сигнал на клапан. Поток в Node-RED для этого тривиален: событие `alarm_gas` напрямую соединяется с узлом, управляющим нужным реле.
Управление вентиляцией
Правильное управление воздушными потоками может замедлить распространение огня и дыма.
- Приточная вентиляция: Должна быть немедленно отключена. Это ограничивает приток кислорода в зону горения. Команда на отключение посылается на вент-установку (часто также по Modbus или через "сухой контакт").
- Системы дымоудаления: Если на объекте установлены специальные вытяжные вентиляторы дымоудаления и клапаны, они должны быть активированы. Это поможет очистить пути эвакуации от дыма.
Эта комплексная реакция, выполняемая автоматически за доли секунды, значительно повышает шансы на спасение жизни и имущества еще до прибытия пожарной команды.
Система оповещений и визуализация
Не менее важной задачей, чем автоматическое реагирование, является немедленное и надежное информирование людей об опасности. Система оповещения должна быть многоканальной и отказоустойчивой.
> 💡 Подсказка: Для критически важных оповещений используйте несколько независимых каналов. Например, комбинация из Push-уведомления (требует интернет-соединения) и SMS-сообщения (требует только сотовой связи через GSM-модем контроллера HI) значительно повышает надежность доставки тревоги.
Многоканальные оповещения
При событии `alarm_smoke` или `alarm_gas` поток Node-RED разветвляется и параллельно отправляет уведомления по всем доступным каналам.
- Push-уведомления: С помощью узлов `node-red-contrib-telegrambot-plus` (для Telegram) или `node-red-contrib-pushover` можно отправлять мгновенные сообщения на смартфоны владельцев. Сообщение должно быть информативным и содержать кнопки для быстрых действий.
- SMS-оповещения: Если контроллер HI оснащен GSM-модемом, можно использовать его для отправки SMS. Это резервный канал на случай отказа интернет-соединения. Поток формирует текстовое сообщение и отправляет его через соответствующий узел управления модемом.
- Телефонный звонок: Некоторые GSM-модемы поддерживают функцию голосового вызова (AT-команда `ATD`). Система может совершить звонок на заранее заданный номер.
{
"chatId": "YOUR_CHAT_ID",
"type": "message",
"content": "🔴 ВНИМАНИЕ! ПОЖАРНАЯ ТРЕВОГА! 🔴\n\nДатчик 'SENS-SMOKE-02' в Гостиной зафиксировал дым!",
"options": {
"parse_mode": "Markdown",
"reply_markup": {
"inline_keyboard": [
[
{ "text": "🔇 Отключить сирену (на 5 мин)", "callback_data": "silence_siren_5m" },
{ "text": "📞 Позвонить в службу 112", "callback_data": "call_112" }
]
]
}
}
}
Нажатие на эти кнопки будет генерировать в Node-RED новое сообщение, которое можно обработать для выполнения соответствующего действия.
Локальная сигнализация
Оповещение людей, находящихся внутри объекта, имеет наивысший приоритет.
Передача данных на UI
Для отображения статуса на панелях управления (HMI, планшеты, смартфоны) используется MQTT как шина состояний.
- Топик: `hi/main/safety/status`
- Payload (JSON):
{
"status": "alarm",
"type": "smoke",
"location": "Гостиная",
"source_id": "SENS-SMOKE-02",
"active_actions": ["power_off", "gas_off", "siren_on"],
"timestamp": 1678886400000
}
Получив такое сообщение, интерфейс может отобразить ярко-красный баннер с подробной информацией о том, где и что произошло, и какие действия предприняла система.
---
Итоги и тестирование системы
Создание потока для контроля датчиков дыма и газа — одна из самых ответственных задач в автоматизации зданий. Комплексный поток в Node-RED объединяет все рассмотренные элементы в единую, надежную систему.
Концептуальная структура полного потока:`[Опрос датчиков по Modbus]` -> `[Парсинг и создание события]` -> `[Фильтрация и конечный автомат]` -> `[Проверка приоритета и установка глобального статуса]` -> `[Ветвление на потоки реагирования]`
- `-> [Сценарий управления питанием]`
- `-> [Сценарий перекрытия газа]`
- `-> [Сценарий управления вентиляцией]`
- `-> [Сценарий локальной сигнализации (сирена, свет)]`
- `-> [Сценарий внешних оповещений (Push, SMS)]`
- `-> [Отправка статуса в MQTT для UI]`
Важность регулярного тестирования
Система безопасности бесполезна, если она не работает в нужный момент. Регулярная проверка является обязательной.
- Методы тестирования:
* Тестовый газ: Использование специального аэрозоля ("тестовый газ для дымовых датчиков") позволяет проверить реакцию сенсора в условиях, близких к реальным.
- Периодичность: Рекомендуется проводить полное тестирование системы не реже одного раза в 6 месяцев.
Чек-лист для пусконаладки
Перед сдачей объекта инсталлятор должен пройти по следующему чек-листу:
* Контакторы в щите отключают питание.
* Газовый клапан закрывается.
* Вентиляция отключается.
* Сирена и световая сигнализация активируются.
Что дальше
После успешного внедрения базовой системы контроля дыма и газа, ее можно расширить. Следующие шаги могут включать интеграцию с системами верхнего уровня, например, передачу тревожного сигнала на пульт централизованного наблюдения охранного предприятия или в общую систему управления зданием (BMS) для крупных объектов. Также, можно настроить более сложную логику, учитывающую направление ветра (с метеостанции) для прогнозирования распространения дыма на участке.