Умный Дом на Modbus
Долго мучил сторонний шлюз Modbus RTU - Modbus TCP и в конце-концов решил написать свой шлюзовый сервер Modbus RTU - TCP Client. Хочу сразу отметить на стороне TCP клиента, сервер использует свой протокол и не является Modbus TCP протоколом!
шлюз TCP to Modbus RTU
-
Программа написана специально для работы с Arduino по протоколу Modbus RTU.
Для слэйв устройств является мастером, для TCP клиентов соответственно - сервером.
Используются только 2-е функции Modbus RTU:
- Modbus function code 0x03 (03) - чтение всех регистров
- Modbus function code 0x10 (16) - запись всех регистров
(в данном проекте запись идет только одного регистра)
Получает запросы от клиента (php) по TCP протоколу и преобразует полученную
строку параметров в протокол Modbus RTU для обмена со слэйв устройством.
Программа работает максимум с 20-ю регистрами на устройство.
Пока думаю хватит
Итак для затравки картинка web страницы.
Конечно страница больше тестовая и полностью не отражает работу умного дома. Но на данном этапе я и не стремился делать все и сразу. Это как пример реализации управления, мониторинга. Дальше нужна только фантазия...
Что можно делать.
- Опрашивать устройства меняя их ID.
- Устанавливать значения регистров, при установке checkbox в "авто" - в реальном режиме постоянно читать состояние устройства, опрос идет раз в сек.
Слева в полях на сером фоне показаны текущие значения состояния регистров (не редактируются). Справа - заносятся новые значения. Кнопка "очистить" - очищает эти поля.
Схема для подключения Arduino по RS485
Вот еще вариант подключения с обвязкой
Возможно подключение к роутеру через преобразователь USB-RS485 (не "коверкая" роутер).
Одна ардуина имеет ID=1, другая ID=2. К ардуине с ID=1 подключен температурный датчик. Значение температуры заносится в регистр 1. Т.к. температура имеет дробное значение, а регистры целочисленные чтобы сохранить дробую часть, я умножил это значение на 100 и привел его к целочисленному. На web странице я не делал обратного преобразования.
Source: cyber-place.ru









