Страница 22 из 31

Re: модуль modbus

Добавлено: Чт окт 26, 2017 9:49 am
sergejey
slex_s писал(а):Пробовал использовать модуль Modbus для опроса и управления (10 устройств х 40 регистров), но сам модуль периодически отваливался. После долгих попыток связать устройства через модуль с системой отказался от этой затеи. Решив сделать связь MJD и Openscada (мощная система для нижнего уровня) через MySql полет отличный
А что отваливалось? Могли бы вместе разобраться всем на пользу.

Re: модуль modbus

Добавлено: Чт ноя 09, 2017 11:47 pm
Geban
может быть я щас буду баянить, но мажордомо не умеет работать с RS485 (последовательным портом) в модуле modbus. Но это решаемо. Есть шикарный проект https://github.com/3cky/mbusd который представляет из себя шлюз между RS232(USB свисток) и MODBUS TCP. работает просто. Втыкаете в сервак преобразователь интерфейса (usb свисток), смотрите как он определился или

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

ls /dev/tty* 
собираете mbusd, запускаете

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

mbusd -p /dev/ttyUSB1 -s 115200 -P 503
где /dev/ttyUSB1 - ваш свисток, 115200 скорость шины modbus, 503 сетевой порт на который будет транслироваться протокол.
Дальше в мажордомо в модуле модбас создаете подключение на localhost и порт 503 (ну или какой укажете при запуске шлюза), остальные параметры зависят от вашего устройства которое будете опрашивать.

Если запустить шлюз на параметром -d то будет видно обмен через шлюз(полезно при отладке).
Для автозапуска можно прописать это дело в /etc/rc.local

собственно все вышеописанное справедливо для Linux, тем кто живет на винде предписаны боль и страдания )

Re: модуль modbus

Добавлено: Пт ноя 10, 2017 12:24 am
Geban
Sl1ng3R писал(а):Всем привет.
Столкнулся с новой для себя темой, а именно RS485.
Есть счетчик электроэнергии, с RS485. Нева 324 (Тайпит)
В качестве "считывателя" использую Moxa NPort 5130A.
Настройки на скриншотах, что выставить в модуле modbus MJ с трудом понимаю (ну кроме адреса и порта).
Данные явно идут, как их поймать в MJ?

МОХА это просто преобразователь интерфейса.
Для того что б все срослось она(МОХА) должна уметь определять протокол и правильно его конвертить либо счетчик должен уметь работать по MODBUS TCP (RTU).
Суть в том, что протокол MODBUS RTU и MODBUS TCP(RTU) имеют одинаковые поля, одинаковую длину и тайминги, но за счет того что в MB TCP он обернут собственно в TCP то из пакета модбас выпиливается контрольная сумма а вместо нее используется контрольная сумма TCP пакета. и получается что мажордом ждет на входе TCP пакет без контрольной суммы modbus внутри, а получает полноценный RTU пакет завернутый в TCP. Поэтому и не работает

Re: модуль modbus

Добавлено: Сб фев 03, 2018 2:09 am
Maikl1551
sergejey писал(а):Добавил в последние обновления модуль ModBus.

Возможности:
* Подключение к устройствам ModBus по протоколам TCP/UDP
* Операции чтения данных: FC1, FC2, FC3, FC4 (реле, входы, регистры)
* Выбор функции преобразования прочитанных данных (float, integer, string и т.п.)
* Операции записи данных: FC5, FC6, FC15, FC16 (реле и регистры)

Присутствует возможность установки связанного объекта (свойства) -- для операций чтения в объект будут переносится прочитанные данные, для операций записи изменение свойства автоматически отправит данные на устройство.

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

Пример экрана настройки устройства:

Изображение

После добавления первого устройства надо перезапустить систему, т.к. цикл опроса ModBus-устройств запустится только если есть хоть одно устройство.

Re: модуль modbus

Добавлено: Сб фев 03, 2018 2:19 am
Maikl1551
всем привет! кто сможет помочь, объяснить что не так. есть устройство Modbus на ардуино мега. из mojordomo отправляю команды write single coil, все ровно работает, ардуино принимает реле включается. но в обратном направлении, инфа с датчика температуры ds18b20 идет как то не нормально, то есть в mojordomo отображается на буквально секунду и пропадает на 10 на 5 секунд и опять на секунду появляется . и так всегда. что это может быть кто поможет. настройки как положено как и выше. FC3 holding register/ INT to Integer и другие пробовал.

Re: модуль modbus

Добавлено: Чт мар 01, 2018 6:23 pm
barsmaster
Помогите разобрать данные с устройства.
Не получается самому разобрать.
Модулем вычитываю все регистры, получаю следующее:
0,16,134,151,35,65,48,50,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0
На самом устройстве данные светятся так: https://gyazo.com/7aacbe9afcf221c547d0ec294790d285
var1=108697
var2=datetime
var3=0.006
var4=0
var5=0.006

История
0,16,134,151,35,65,47,50,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0
0,16,134,151,35,65,47,56,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0
0,16,134,151,35,65,48, 9,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0
0,16,134,151,35,65,48,24,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0
0,16,134,151,35,65,48,44,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0
0,16,134,151,35,65,48,50,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0
0,16,134,151,35,65,50,15,0,0,0,6,0,0,0,0,0,6,35,65,1,65,0,12,2,14,0,0,0,0,0,0,0,0,0,0

Видно что данные меняются, в частности время.

Вижу что есть пары регистров 0,0,0,6 нужно получить 0.006.
Вопрос, как? какое преобразование использовать?

Re: модуль modbus

Добавлено: Ср май 02, 2018 11:17 am
andrusha7778
Добрый день.
Подскажите пожалуйста, каким образом можно получить данные через модуль modbus, если требуется сделать это не по-расписанию (когда в цикле идет опрос каждую секунду) а одномоментно, сразу скажем после вызова какого-то метода?

Re: модуль modbus

Добавлено: Сб май 19, 2018 1:29 pm
Sapizdullin
Господа! Решил прикрутить железяку по ModbusTCP к МД. Итог ниже:

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

2018-05-19 13:22:43 FC2 Error: <pre>readInputDiscretes: START
Connected
Packet: 8aea0000000601020000000a
Send
Wait data ... 
Data received
Packet: 8aea00000003018202
</pre> Exception: Modbus response error code: 2 (ILLEGAL DATA ADDRESS) in /var/www/html/modules/modbus/ModbusMaster.php:205
Stack trace:
#0 /var/www/html/modules/modbus/ModbusMaster.php(302): ModbusMaster->responseCode('\x8A\xEA\x00\x00\x00\x03\x01\x82\x02')
#1 /var/www/html/modules/modbus/ModbusMaster.php(415): ModbusMaster->readCoilsParser('\x8A\xEA\x00\x00\x00\x03\x01\x82\x02', '10')
#2 /var/www/html/modules/modbus/ModbusMaster.php(352): ModbusMaster->readInputDiscretesParser('\x8A\xEA\x00\x00\x00\x03\x01\x82\x02', '10')
#3 /var/www/html/modules/modbus/modbus.class.php(227): ModbusMaster->readInputDiscretes('1', '0', '10')
Куда копать?

Re: модуль modbus

Добавлено: Сб май 19, 2018 7:10 pm
Aven
andrusha7778 писал(а):
Ср май 02, 2018 11:17 am
Добрый день.
Подскажите пожалуйста, каким образом можно получить данные через модуль modbus, если требуется сделать это не по-расписанию (когда в цикле идет опрос каждую секунду) а одномоментно, сразу скажем после вызова какого-то метода?
Подключить библиотеку:

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

   require_once 'ПУТЬ/ModbusMaster.php';
Создать экземпляр класса:

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

   $modbus = new ModbusMaster(адрес, протокол);
Примеры работы смотрите в исходниках модуля.

Re: модуль modbus

Добавлено: Сб май 19, 2018 7:11 pm
Aven
Sapizdullin писал(а):
Сб май 19, 2018 1:29 pm
Господа! Решил прикрутить железяку по ModbusTCP к МД. Итог ниже:
Куда копать?
Ну он же выдает ошибку ILLEGAL DATA ADDRESS, значит неверный адрес регистра задан, устройство это и сообщает.