Четырех канальный релейный блок с управлением по сети RS485 с протоколом ModBus

23 апреля 2019, 18:42

Представляю вашему вниманию проект релейного блока для систем домашней автоматизации. Его основное предназначение – местное и (или) дистанционное управление требуемыми нагрузками. Местное управление четырьмя выходами осуществляется с четырех гальванически изолированных от внутреннего микроконтроллера входов. Дистанционное управление происходит по сети RS485 широко распространенным протоколом обмена ModBus RTU. Соответственно этот релейный блок будет легко интегрироваться в любой системе, которая поддерживает этот протокол. Особо он будет полезен для автоматизации домашнего освещения.

Релейный блок проектировался исходя из опыта эксплуатации «умного света» в квартире собранного на устройствах управления с сетевым протоколом Х10 передаваемым по питающим сетевым проводам. Отмечу – практически все меня устраивало! Устройства автономны, при отсутствии центрального блока выполняют заложенный в них алгоритм управления, самостоятельно. А с помощью централизованной системы управления,  возможно, организовать различные сценарии освещения, удаленное управление освещением, имитацию присутствия и прочие вкусности типа «включения кофеварки по утрам» Подробно можете почитать про это в моем личном блоге тут. Но протокол Х10 имеет два существенных недостатка:

1.  Команда с повтором передается довольно медленно, в течении одной секунды.

2.  При наличии в сети высокочастотных или импульсных помех среда передачи становится недоступной. Устройства попросту глохнут.

Если с первым недостатком еще можно мириться, то со вторым в принципе не возможно!

Сначала я вдруг обнаружил, что у меня не всегда срабатывает выключатель в спальне, когда соседка выше этажом пылесосит свою квартиру. Эту беду я победил легко, установив специальный фильтр на вводе электросети в квартиру. Потом вдруг после включения света в кабинете перестали работать все выключатели в квартире. Причиной тому было высыхания электролитического конденсатора в сетевом выпрямителе одной из лампочек - экономок в люстре кабинета. И колебания тока внутреннего генератора преобразователя лампочки попадало в электрическую сеть. А поскольку в современном жилище большинство бытовых приборов имеют высокочастотные блоки питания, такая борьба за чистоту сети продолжается с завидной периодичностью.

Есть альтернатива устройства с беспроводным обменом или по отдельным проводам. Например, устройства KNXили HDL, но цены на них, на мой взгляд неприемлемые. Решил поискать что то подешевле Есть на АлиЭкспресс, устройства ввода вывода работающие по сети RS485 ModBus и даже цены приемлемые. Все хорошо, на первый взгляд. Принцип работы сети ModBus основан на том, что в сети одно головное устройство опрашивает все остальные. Получается для того что бы включить какой то выход по команде с какого то входа, это головное устройство должно спросить состояние входа и в зависимости от результата включить или выключить соответствующий выход. Крутит устройство управления домашней автоматикой опрос выключателей и датчиков, и рулит соответствующими выходами и реле. Но вдруг оно раз и остановилось? Ну мало ли сложное ведь, поломалось или просто повисло…. И все сидим без тепла и света. Клацаем выключателями и никакой реакции. Неее, так не пойдет. Мы уже это проходили.

Вывод устройства автоматизации в рамках выполнения своей задачи должны быть автономны. Выключатель управлять светом по заданному алгоритму, терморегулятор поддерживать температуру, регулятор уровня поддерживать уровень воды в требуемых интервалах, и т.д. и т.п. И дополнительно иметь возможности получать настройки и команды управления с внешней централизованной системы. Настроил местно или удаленно, и оно само по себе работает. Поломалось центральное управление, основной функционал не нарушился. Без веб интерфейса жили и еще поживем, пока починиться. Так вернее. Само устройство тоже может выйти из строя, но это локальная неисправность типа  нет света в одной комнате, а не во всей квартире ничего не работает.

Именно эта философия и была заложена в основу проектирования алгоритма работы представляемого релейного блока

В текущей версии устройства реализовано:

Управление четырех выходов по принципу N вход управляет N выходом

Режимы работы входов могут изменяться. Вход может работать как Кнопка, как выключатель, как универсальный выключатель или вход вообще отключен от выхода. Универсальный выключатель работает как кнопка при кратковременном (менее 1 сек.) включении, и как выключатель, если включение было, более 1 сек.

Имеется еще пятый вход, который работает как кнопка "выключить/включить все". Короткое "нажатие" на эту кнопку приводит к выключению всех выходов, а если нажать и подержать более 1 сек. произойдет включение всех выходов. Без этого входа можно было бы, и обойтись, т.к. функцию включить выключить все, удобно реализовывать как некий сценарий освещения в центральном блоке управления. Но мой опыт эксплуатации «умного света» в квартире показывает, что сценарий выключить все является единственным востребованным всеми моими домочадцами. Действительно удобно при выходе из дома нажать на клавишу и быть уверенным, что весь свет и переноска (в которую обычно включается «утренние бытовые приборы» утюг плойка фен) выключены. Поэтому я добавил этот вход, (благо портов хватает) что бы обеспечить самостоятельное исполнение этого сценария устройством. Если устройств несколько этот вход у них объединяется. Я в своей квартире релейные блоки размещаю в распределительных коробках и в силовом электрощите. Еще при строительстве я раскидал восьми проводную витую пару UTP-5 между электрическим щитом и распределительными коробками параллельно с электрическими проводами. Пара питание пара RS485 остальное свободно так, что есть чем соединиться.

Так же в этой версии программы микроконтроллера устройства реализована возможность установить задержку включения и (или) выключения выхода (это может быть полезным например для управления вентилятором в ванной, или освещением от датчика движения). Задержка может быть установлена:

от 1 сек. до 256 сек. с шагом 1 сек.,

от 10 до 2560 сек. с шагом 10 сек. с точностью до минус один шаг.

Еще реализована возможность селективного выбора управления входами выходов. Для каждого входа можно отдельно настроить какие из 4 входов он будет включать какие выключать.  (этот функционал может пригодится например при создании водоподъёмной установки где по двум датчикам уровня воды будет управляется одно реле включающее насос)

Выбор варианта задержки, и настроек селекции входов определяется установкой соответствующего бита в ячейки флагов в соответствующих регистрах управления(см таблицу Exel в архиве материалов к статье) 

Настройка некоторых основных режимов может производиться с помощью кнопки программирования.

Так например для смены режимов необходимо установить требуемое сочетание входов и выходов (СМ таблицу) нажать и подержать кнопку программирования от 3 до 5 сек.Для удобства программирования при нажатии на кнопку программирования более 2 сек. временно все входы начинают работать как кнопки.

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

Вход

Выход

Режим входа

0

0

Кнопка

0

1

Выключатель

1

0

Универсальный выключатель

1

1

Вход отключен от выхода

 

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

Команды, которые принимает и передает блок, сведены в таблицу Exel.

Разработаны  в среде EasyEDA печатные платы для размещения релейного блока в корпусе на DIN рейку шириной в два юнита.   Открытый проект опубликован вот по этой ссылке.   На этом же сайте  можно заказать изготовление плат промышленного качества и там же заказать детали.

К проекту приложены файлы:

  • HEX файлы для прошивки для микроконтроллера 16F628A;
  • таблица Exel с описанием реализованных в устройстве команд Modbus RTU;
  • дизайн проект релейного блока в Proteus;
  • Краткое описание проекта
  • Функциональная схема ПО релейного блока

Немного об интеграции релейных блоков в систему домашней автоматизации 

Для того что бы интегрировать релейный блок(и) в систему, нам понадобится прописать в конфигурационном файле configuration.yaml Хаб сети ModBus. Для последовательного интерфейса это будет выглядеть как то так:

modbus:
  name: hub1
  type: serial
  method: rtu
  port: /dev/ttyAMA0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
  timeout: 1

После этого система выступает в качестве мастера сети ModBus.

Минимальная возможная частота опроса устройств в сети ModBus 1 секунда. По началу меня это огорчило, но когда я попробовал опросить сразу несколько релейных блоков указав у них минимальную периодичность 1 сек., выяснилось, что все эти устройства система опрашивает именно каждую секунду а время между опросами устройств где то в пределах 20 мс.

Получается, что с периодичностью в 1 секунду можно выполнить 30-50 ModBus запросов.

Для описания релейных блоков в качестве переключателей, из всего многообразия ModBus команд релейного блока нам понадобятся только команды битового чтения и записи состояния катушек (выходов) релейных блоков. Это в конфигурационном файле описывается примерно так:

switch:
  - platform: modbus
    scan_interval: 1
    coils:
    - name: Кухня верхний свет
      hub: hub1
      slave: 50
      coil: 1
    - name: Кухня локальный свет
      hub: hub1
      slave: 50
      coil: 3
После этого в системе появляется два переключателя switch.kukhnia_verkhnii_svet и switch.kukhnia_lokalnyi_svet, которые вы можете использовать на своих страницах управления.

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

Небольшой фото отчет как это я использую эти релейные блоки у себя в квартире.

У меня в квартире релейные блоки задействованы в основном для управления освещением. Их установка производилась взамен используемых ранее релейных блоков с протоколом Х10 от компании "Разумный дом".  Переключение делалось в рабочей системе, поэтому для того что бы не оставлять домочадцев без света надолго, я предварительные настройки (задержки, реакции выходов на "включить выключить все", состояние по умолчанию при включении питания) производил на рабочем столе, программой ModBus Pool. Всего у меня установлено шесть релейных блоков на все светильники в квартире.  Тот что на фото слева, предназначен для установки в распредкоробку. Да, да, еще на стадии строительства я установил большие распредкоробки и кроме электрических проводов завел туда и витую пару. На правой картинке, если присмотреться, видно паразитную подсветку светодиодов блока управления, несмотря на то что дополнительно замотал черной изолентой.

Четыре релейных блока установлены в распредщите, Два диммерных Управляют освещением в коридоре и Гостинной. Третий релейник с симмисторным выходом, управляет освешением в кладовке и ванной, им же, каналами с установленной задержкой выключения управляется вентилятор в ванной и свет над входной дверью, запускаемый датчиком движения. Еще один релейный блок с выходом на обычных реле управляет переключением "день/ночь", сиреной, и парой шлейфов сигнализации (это пока так на пробу для активации СМС уведомлений). 

Шестой блок установлен на кухонном гарнитуре и управляет его освещением. Задействовано три канала Свет в потолок, верхний свет и локальный свет. По началу хотел задействовать трех кнопочный радио выключатель, но жена сказала что не хочет жать по три пипки каждый раз, пусть все 

сразу включается. Поэтому задействовал встроенную возможность "смеситель входов" и с одного входа, настроенного в режиме кнопка, управляю сразу тремя реле. На фото если присмотрется в правом нижнем углу виден микроконцевик, к поводку которого привязана веревочка. Дернешь за веревочку свет и включится.

Вот так пока выглядит веб страничка управления освещением.


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Дмитрий Батюшин (ReD)
    Дмитрий Батюшин (ReD) 5 месяцев назад

    Как только открыл статью показалось все сложно и непонятно, дочитавши до конца - многое разъяснилось 

  2. (mobionic)
    (mobionic) 5 месяцев назад

    Спасибо, очень познавательно. А корпус каким образом делаете?

    • Александр Вайдуров (AlexAW)
      Александр Вайдуров (AlexAW) 5 месяцев назад

      Брал вот такие корпуса на алиэкспресс. Выпиливал под разъемы платы управления, фиксировал верхнюю плату парой капель термоклея. Можно использовать корпуса чуть по дороже D2MG там возни немного поменьше.

  3. (meta11ist87)
    (meta11ist87) 5 месяцев назад

    Про диммеры распишите, очень интересно)

    и про ргб тоже почитал бы. Спасибо за работу, палец вверх прожал, в избранное добавил

  4. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 5 месяцев назад
    Комментарий был удален
  5. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 5 месяцев назад
    Комментарий был удален
  6. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 5 месяцев назад
    Комментарий был удален
  7. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 5 месяцев назад
    Комментарий был удален
  8. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 5 месяцев назад
    Комментарий был удален
К списку статей

Скидки для сообщества

Wiren Board

+7 495 150-66-19
Промокод:
SPRUTHUB
Размер скидки:
10%
Не работает на блоки питания, антенны и т.п, не работает на демо-чемодан.

Разумный дом

+7 487 223-51-50
Промокод:
71
Размер скидки:
20%
Указывать в письме или комментарии к заказу

Похожие статьи

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
02 ноября 2018, 12:14
Кнопка звонка с уведомлениями в HomeKit
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
02 октября 2018, 18:41
Установка SDK для компиляции прошивок под HomeKit