[Модуль] ModBus (modbus)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Geban
Сообщения: 136
Зарегистрирован: Вс июл 14, 2013 2:42 pm
Благодарил (а): 6 раз
Поблагодарили: 26 раз

Re: модуль modbus

Сообщение Geban » Вт июн 13, 2017 12:13 am

Проси даташит на девайс у китайца. Мне так диммер пришел... просто диммер.. а какой адрес, что слать, какие регистры.. пару дней колупал китайца, потом он мне прислал мануал.
Попробуй Mosbus Poll под виндой самая нормальная софтина для отладки.

Есть у меня китайский модуль для подключения 8 штук ds1820 и на выходе у него modbus rtu (rs485) так вот у него структура регистров такая 0 - температура первого входа(без точки типа если 29.5 в регистре будет 295) 1 - знак первого входа(если выше нуля то тут 0, если ниже то 1) и так далее для всех 8 входов
Аватара пользователя
cepxuo
Сообщения: 98
Зарегистрирован: Вт май 02, 2017 7:31 am
Благодарил (а): 31 раз
Поблагодарили: 6 раз

Re: модуль modbus

Сообщение cepxuo » Вт июн 13, 2017 11:35 am

Делюсь новостями. Опытным путём выяснилось, что первые 2 значения это влажность х 10 и температура х 10.
Так как я переезжаю на Raspberry Pi, все настройки привожу для неё. Для работы с Modbus RTU нашёл утилитку mbpoll, которая по сути тот же modpoll, что и для винды. Данные, полученные этой утилиткой, я отправляю брокеру MQTT вот этим скриптом:

Код: Выделить всё

#!/bin/bash
#Получаем данные
hum1=`/usr/local/bin/mbpoll -1 -t 3 -c 2 -m rtu -b 9600 -P none -4 /dev/ttyUSB0 | /bin/grep 1]: | /usr/bin/awk {'print $2'}`
tmp1=`/usr/local/bin/mbpoll -1 -t 3 -c 2 -m rtu -b 9600 -P none -4 /dev/ttyUSB0 | /bin/grep 2]: | /usr/bin/awk {'print $2'}`
#Приводим данные в надлежащий вид (делим на 10 и добавляем дробную часть)
hum="$((hum1 / 10)).$((hum1 % 10))"
tmp="$((tmp1 / 10)).$((tmp1 % 10))"
#Публикуем значения по MQTT
/usr/bin/mosquitto_pub -t SNS/HUM1 -m $hum
/usr/bin/mosquitto_pub -t SNS/TMP1 -m $tmp
Так как это просто температура и влажность - запускать скрипт можно и кроном раз в минуту :)
SerG123
Сообщения: 5
Зарегистрирован: Пт июн 16, 2017 12:12 pm
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: модуль modbus

Сообщение SerG123 » Пт июн 16, 2017 12:56 pm

Как отправить с брокера MQTT обратно в mbpoll?
Аватара пользователя
cepxuo
Сообщения: 98
Зарегистрирован: Вт май 02, 2017 7:31 am
Благодарил (а): 31 раз
Поблагодарили: 6 раз

Re: модуль modbus

Сообщение cepxuo » Пт июн 16, 2017 10:54 pm

SerG123 писал(а):Как отправить с брокера MQTT обратно в mbpoll?
в mbpoll есть параметр -t 4 для отправки 16-битных данных и -t 4:int или 4:float или 4:hex для отправки 32-битных данных.
Ну а как читать брокера средствами mosquitto я не нашёл. Всё, что попадалось - отсылки в сторону MQTT-клиентов, например http://www.eclipse.org/paho/
За это сообщение автора cepxuo поблагодарил:
SerG123 (Вс июн 18, 2017 7:18 pm)
Рейтинг: 1.16%
SerG123
Сообщения: 5
Зарегистрирован: Пт июн 16, 2017 12:12 pm
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: модуль modbus

Сообщение SerG123 » Вт июн 20, 2017 11:47 am

Нашёл такой пример:

Код: Выделить всё

#!/bin/bash

while read msd
do
mbpoll -m tcp -t4 -r2 192.168.0.100 $msd
echo $msd
done < <(mosquitto_sub -t REG1) 
Скрипт подписывается на топик и отправляет значение сообщение в mbpoll.
За это сообщение автора SerG123 поблагодарил:
cepxuo (Ср июн 21, 2017 8:47 am)
Рейтинг: 1.16%
SerG123
Сообщения: 5
Зарегистрирован: Пт июн 16, 2017 12:12 pm
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: модуль modbus

Сообщение SerG123 » Вт июн 20, 2017 12:25 pm

Для тех, кому нужен рабочий шлюз Modbus TCP / RTU на esp8266 https://esp8266.ru/forum/threads/modbus ... erver.911/
За это сообщение автора SerG123 поблагодарил:
cepxuo (Ср июн 21, 2017 8:51 am)
Рейтинг: 1.16%
Аватара пользователя
cepxuo
Сообщения: 98
Зарегистрирован: Вт май 02, 2017 7:31 am
Благодарил (а): 31 раз
Поблагодарили: 6 раз

Re: модуль modbus

Сообщение cepxuo » Ср июн 21, 2017 8:51 am

SerG123 писал(а):Для тех, кому нужен рабочий шлюз Modbus TCP / RTU на esp8266
а я буду такую схемку собирать. https://www.youtube.com/watch?v=hg7qX342Iw4
Жду детальки из Китая
SerG123
Сообщения: 5
Зарегистрирован: Пт июн 16, 2017 12:12 pm
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: модуль modbus

Сообщение SerG123 » Ср июн 21, 2017 9:12 am

Я его тоже собирал.Только модуль modbus в majordomo плохо работает со шлюзами Modbus TCP--RTU.
SerG123
Сообщения: 5
Зарегистрирован: Пт июн 16, 2017 12:12 pm
Благодарил (а): 1 раз
Поблагодарили: 2 раза

Re: модуль modbus

Сообщение SerG123 » Ср июн 21, 2017 10:14 am

Оба шлюза считывают регистры хорошо. Но стоит только быстро записывать, то есть быстро нажимать выключатели в панели или на сцене, начинаются глюки.
В первом варианте: majordomo зависает на несколько минут. https://esp8266.ru/forum/threads/modbus ... erver.911/
Во втором варианте: все выключатели, димеры в панели и на сцене сбрасываются в ноль, после всё виснет на несколько минут. https://www.youtube.com/watch?v=hg7qX342Iw4
Оба шлюза в modbus poll работают без глюков.
P.S. Модуль modbus в majordomo заточен только под устройства modbus tsp, работающие без конвертации в modbus rtu.
Аватара пользователя
cepxuo
Сообщения: 98
Зарегистрирован: Вт май 02, 2017 7:31 am
Благодарил (а): 31 раз
Поблагодарили: 6 раз

Re: модуль modbus

Сообщение cepxuo » Ср июн 21, 2017 9:18 pm

Ну мне как раз только читать и надо. Буду брать показания с такого же счётчика и с датчика температуры/влажности, который взял на пробу, пощупать что такое modbus. Вот и пригодится в коридоре :)
Ответить