Страница 20 из 29

Re: модуль modbus

Добавлено: Вт июн 13, 2017 12:13 am
Geban
Проси даташит на девайс у китайца. Мне так диммер пришел... просто диммер.. а какой адрес, что слать, какие регистры.. пару дней колупал китайца, потом он мне прислал мануал.
Попробуй Mosbus Poll под виндой самая нормальная софтина для отладки.

Есть у меня китайский модуль для подключения 8 штук ds1820 и на выходе у него modbus rtu (rs485) так вот у него структура регистров такая 0 - температура первого входа(без точки типа если 29.5 в регистре будет 295) 1 - знак первого входа(если выше нуля то тут 0, если ниже то 1) и так далее для всех 8 входов

Re: модуль modbus

Добавлено: Вт июн 13, 2017 11:35 am
cepxuo
Делюсь новостями. Опытным путём выяснилось, что первые 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
Так как это просто температура и влажность - запускать скрипт можно и кроном раз в минуту :)

Re: модуль modbus

Добавлено: Пт июн 16, 2017 12:56 pm
SerG123
Как отправить с брокера MQTT обратно в mbpoll?

Re: модуль modbus

Добавлено: Пт июн 16, 2017 10:54 pm
cepxuo
SerG123 писал(а):Как отправить с брокера MQTT обратно в mbpoll?
в mbpoll есть параметр -t 4 для отправки 16-битных данных и -t 4:int или 4:float или 4:hex для отправки 32-битных данных.
Ну а как читать брокера средствами mosquitto я не нашёл. Всё, что попадалось - отсылки в сторону MQTT-клиентов, например http://www.eclipse.org/paho/

Re: модуль modbus

Добавлено: Вт июн 20, 2017 11:47 am
SerG123
Нашёл такой пример:

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

#!/bin/bash

while read msd
do
mbpoll -m tcp -t4 -r2 192.168.0.100 $msd
echo $msd
done < <(mosquitto_sub -t REG1) 
Скрипт подписывается на топик и отправляет значение сообщение в mbpoll.

Re: модуль modbus

Добавлено: Вт июн 20, 2017 12:25 pm
SerG123
Для тех, кому нужен рабочий шлюз Modbus TCP / RTU на esp8266 https://esp8266.ru/forum/threads/modbus ... erver.911/

Re: модуль modbus

Добавлено: Ср июн 21, 2017 8:51 am
cepxuo
SerG123 писал(а):Для тех, кому нужен рабочий шлюз Modbus TCP / RTU на esp8266
а я буду такую схемку собирать. https://www.youtube.com/watch?v=hg7qX342Iw4
Жду детальки из Китая

Re: модуль modbus

Добавлено: Ср июн 21, 2017 9:12 am
SerG123
Я его тоже собирал.Только модуль modbus в majordomo плохо работает со шлюзами Modbus TCP--RTU.

Re: модуль modbus

Добавлено: Ср июн 21, 2017 10:14 am
SerG123
Оба шлюза считывают регистры хорошо. Но стоит только быстро записывать, то есть быстро нажимать выключатели в панели или на сцене, начинаются глюки.
В первом варианте: 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.

Re: модуль modbus

Добавлено: Ср июн 21, 2017 9:18 pm
cepxuo
Ну мне как раз только читать и надо. Буду брать показания с такого же счётчика и с датчика температуры/влажности, который взял на пробу, пощупать что такое modbus. Вот и пригодится в коридоре :)