UA-23773963-1
Ваш браузер устарел. Рекомендуем обновить его до последней версии.

Релейный блок с интерфейсом ModBus RTU RS485 

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

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

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

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

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

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

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

 

WebHomePi релейный модульC

Рис. 1

    Итак что может делать мой  релейный блок:

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

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

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

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

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

Вход

Выход

Режим входа

0

0

Кнопка

0

1

Выключатель

1

0

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

1

1

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

 

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

    Может случиться так, что какой то выход не должен реагировать на вход «Вкл. Выкл. все». Бывает требуется что бы какой то выход был во включенном состоянии сразу после включения питания.  Для настройки режимов реакции выходов  на вход «Вкл. Выкл. все» и установки состояния выходов при включении питания, предусмотрен другой режим работы кнопки программирования. Если кнопку программирования удерживать нажатой более 15 сек., то текущие состояния выходов запишутся в долговременную память устройства как состояния при включении питания. А состояние входов запишется в настройки режимов реакции выходов на вход «Вкл. Выкл. все». Если вход был включен, то соответствующий выход реагирует на вход «Вкл. Выкл. все», если выключен, то игнорирует. Более тонкую настройку реакции (например на Вкл. реагировать на Выкл. нет возможно настроить, но только по протоколу ModBusRTU

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

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

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

задержка может быть установлена от 1 сек. до 256 сек. с шагом 1 сек.,

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

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

Скачать Таблицу Exel с описанием реализованных в устройстве команд ModBusRTU

Скачать материалы для самостоятельного изготовления релейного блока

Ссылка на проект печатной платы там же их можно и заказать