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

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

Модератор: immortal

ElectronicsInFocus
Сообщения: 38
Зарегистрирован: Пт апр 22, 2016 6:15 pm
Откуда: Уфа / Россия
Благодарил (а): 5 раз
Поблагодарили: 6 раз
Контактная информация:

Re: модуль modbus

Сообщение ElectronicsInFocus » Вт ноя 29, 2016 12:04 pm

Mikhail72 писал(а):Всё мучаю ModbusTCP на Arduino, и выяснил такую вещь (с помощью Wireshark), что MD не получает ответа на запрос от UNO по протоколу Modbus. Как я писал выше у меня к MD подключен IP-домофон, когда ему приходит запрос он отсылает ответ, запросов к нему идёт три, два из них каждую секунду и один раз в минуту, тут всё в порядке. Когда запрос идёт к Ардуино, ответа нет. Но данные в MD откуда-то всё-таки попадают, решил посмотреть всю переписку между устройствами и нашел, что IP-домофон и Arduino обмениваются ещё и TCP пакетами с MD, видимо из них-то и проскакивают периодически данные в MD, т.е. когда я подключал Arduino к Modbus Poll, они друг друга отлично понимают по TCP, а вот MD понимает только данные, которые ему приходят в ответ на запрос по протоколу Modbus, а всё что проскакивает случайно видимо баг.
TCP-пакеты помимо пакетов с modbus-телом - это нормально, стандартное установление соединения по TCP. Ваших данных в них быть не может, это ошибочное предположение.
Чтобы не гадать на кофейной гуще, приложите дамп из Wireshark за несколько минут и опишите на каких IP какие узлы сидят.
Аватара пользователя
shemnik69
Сообщения: 583
Зарегистрирован: Пн дек 24, 2012 3:01 pm
Откуда: Саратов Saratov
Благодарил (а): 67 раз
Поблагодарили: 61 раз

Re: модуль modbus

Сообщение shemnik69 » Ср ноя 30, 2016 4:24 pm

Вот интересная тема. Интересна сама реализация. https://m.geektimes.ru/post/262568/
Mikhail72
Сообщения: 26
Зарегистрирован: Вт июн 14, 2016 11:26 pm
Откуда: Тюмень
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Re: модуль modbus

Сообщение Mikhail72 » Ср ноя 30, 2016 9:32 pm

Подключил Arduino, запустил Wireshark и начал тыкать кнопку обновить в настройках Modbus MajorDoMo. В логе пару раз проскочило значение 70, пока принтскринил может третье успело. 192.168.1.7 - адрес исследуемого, 192.168.1.3 - сервер MD, 192.168.1.8 - ip-домофон.

Скрины прилагаются и дамп, если я правильно понял что это он.
1.rar
(560.29 КБ) 124 скачивания
СпойлерПоказать
1234.jpg
1234.jpg (225.64 КБ) 7109 просмотров
1225.jpg
1225.jpg (495.82 КБ) 7109 просмотров
1223.jpg
1223.jpg (487.57 КБ) 7109 просмотров
Mikhail72
Сообщения: 26
Зарегистрирован: Вт июн 14, 2016 11:26 pm
Откуда: Тюмень
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Re: модуль modbus

Сообщение Mikhail72 » Ср дек 07, 2016 10:39 pm

Раз никто не отвечает, решил поснифферить общение между MasterOPC Universal Modbus Server и тем же Arduino Uno, т.к. срок демки Modbus Poll истёк. При установке фильтра ModbusTCP отображаются только запросы сервера, ответов от Arduino не приходит, но данные на сервере отображаются корректно, т.е. данные от Uno уходят в TCP-пакетах и сервер их понимает, а MD понимает только modbus/tcp ответ на modbus/tcp запрос. Придётся искать костыли, т.к. очень хочется modbus.
Коротенький дамп прилагаю и скрин запрос/ответ OPC Server
2.rar
(2.99 КБ) 114 скачиваний
СпойлерПоказать
opc.jpg
opc.jpg (681.82 КБ) 7061 просмотр
п.с. Отлаживаю систему систему контроля и управления доступом + контроль и управление локальным очистным сооружением на Arduino, управление выходами осуществляю по ModbusTCP FC5/Write single coil (MD и Uno дружат), а обратную связь через GET, т.к. MD не понимает Uno.
gorobey
Сообщения: 50
Зарегистрирован: Чт окт 27, 2016 11:48 am
Благодарил (а): 13 раз
Поблагодарили: 3 раза

Re: модуль modbus

Сообщение gorobey » Пн дек 12, 2016 6:39 pm

Обнаружилась проблема с модулем

http://192.168.99.хх/admin.php?pd=cGFuZWw6e2FjdGlvbj1tb2RidXN9pz_&md=modbus&inst=adm&
Error:
1406: Data too long for column 'LOG' at row 1
UPDATE `modbusdevices` SET `ID`='1', `TITLE`='Sensor', `HOST`='192.168.99.203', `PROTOCOL`='TCP', `PORT`='0', `DEVICE_ID`='2', `REQUEST_TYPE`='FC3', `REQUEST_START`='0', `REQUEST_TOTAL`='1', `RESPONSE_CONVERT`='dw2i', `DATA`='', `CHECK_LATEST`='2016-12-12 17:37:20', `CHECK_NEXT`='2016-12-12 17:38:20', `POLLPERIOD`='60', `LINKED_OBJECT`='TempSensor01', `LINKED_PROPERTY`='temp', `LOG`='2016-12-12 17:37:20 FC3 Error:

readMultipleRegisters: START\nConnected\nPacket: 7f2200000006020300000001\nSend\nWait data ... \nWait data ... \nData received\nPacket: 7f220000000302830b\n

exception \'Exception\' with message \'Modbus response error code: 11 (GATEWAY TARGET DEVICE FAILED TO RESPOND)\' in /var/www/modules/modbus/ModbusMaster.php:205\nStack trace:\n#0 /var/www/modules/modbus/ModbusMaster.php(509): ModbusMaster->responseCode(\'\\x7F\"\\x00\\x00\\x00\\x03\\x02\\x83\\v\')\n#1 /var/www/modules/modbus/ModbusMaster.php(445): ModbusMaster->readMultipleRegistersParser(\'\\x7F\"\\x00\\x00\\x00\\x03\\x02\\x83\\v\')\n#2 /var/www/modules/modbus/modbus.class.php(240): ModbusMaster->readMultipleRegisters(\'2\', \'0\', \'1\')\n#3 /var/www/modules/modbus/modbusdevices_edit.inc.php(117): modbus->poll_device(\'1\')\n#4 /var/www/modules/modbus/modbus.class.php(430): require(\'/var/www/module...\')\n#5 /var/www/modules/modbus/modbus.class.php(131): modbus->edit_modbusdevices(Array, \'1\')\n#6 /var/www/modules/modbus/modbus.class.php(93): modbus->admin(Array)\n#7 /var/www/lib/jTemplate.class.php(711) : eval()\'d code(8): modbus->run()\n#8 /var/www/lib/jTemplate.class.php(711): eval()\n#9 /var/www/lib/jTemplate.class.php(195): jTemplate->parseModules(\'...\', Array, \'./templates/\')\n#10 /var/www/lib/jTemplate.class.php(109): jTemplate->parse(\'

Явно из-за длинного лога. Где он хранится и как его пофиксить ?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4279
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1518 раз
Контактная информация:

Re: модуль modbus

Сообщение sergejey » Вт дек 27, 2016 7:31 pm

попробуйте обновить модуль, я добавил обрезание лога

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
TheForum
Сообщения: 146
Зарегистрирован: Сб авг 06, 2016 2:11 am
Откуда: Рига
Благодарил (а): 13 раз
Поблагодарили: 18 раз

Re: модуль modbus

Сообщение TheForum » Ср дек 28, 2016 4:52 pm

Приветствую.

Помогите с конвертацией или с коррекцией php файла модуля MODBUS. Считываю показания с измерительного модуля по модбасу (TCP). Другой сканер Модбас показывает значение 2283 (в десятичной системе) (в инструкции указано выдаваемое значение и коэффициент 0.1, т.е. получаем 228.3 Вольт как и должно быть). При использовании модуля MJD и выборе преобразование данных "none (bytes)" получаю 8,228. При выборе других видов преобразования получаю вообще что то неадекватное. Как добиться данных с десятичной точностью - 228.3 вместо 8,228 (иногда впереди 9). Или хотя бы целые значения - 228... Не совсем понятны преобразования полученных данных MODBUS MJD модулем..

Спасибо.

Дополнение - проблему решил - немного еще поэкспериментировал с функциями чтения и преобразования.. В итоге выбрал функцию FC4 вместо FC3 и преобразование INT to integer и получил свои желаемые 2283 :) Что еще заметил - мое устройство обновляет данные каждые 200мс. На другом сканере стоял период обновления 1 сек., в MJD тоже 1 сек. Данные корректно считывались в обеих программах. Ради эксперимента в другом сканере поставил время опроса 200мс, и в MJD данные перестали обновляться, другой сканер работал корректно.. Так что смотрите время опроса данных своих устройств, не ставте максимальные значения и планируйте ресурсы :)
Последний раз редактировалось TheForum Чт дек 29, 2016 12:24 am, всего редактировалось 1 раз.
За это сообщение автора TheForum поблагодарил:
Geban (Пт фев 17, 2017 9:19 pm)
Рейтинг: 1.23%
Немного желания, терпения и времени - и все получится :)
Mikhail72
Сообщения: 26
Зарегистрирован: Вт июн 14, 2016 11:26 pm
Откуда: Тюмень
Благодарил (а): 5 раз
Поблагодарили: 6 раз

Re: модуль modbus

Сообщение Mikhail72 » Ср дек 28, 2016 9:54 pm

Обновил, подключил, в логе событий по-прежнему пусто, после нескольких нажатий на кнопку "обновить" в логе появилась одна строчка с данными. При отключении Arduino появляется строка "2016-12-28 23:36:46 FC3 Error: <pre>readMultipleRegisters: START
</pre> exception 'Exception' with message 'socket_connect() failed.</br>Reason: ()
Запустил MasterOPC Universal Modbus Server с теми же настройками регистров, всё нормально.
СпойлерПоказать
5.jpg
5.jpg (757.16 КБ) 7469 просмотров
ILGAS
Сообщения: 366
Зарегистрирован: Пт июл 26, 2013 4:11 pm
Благодарил (а): 71 раз
Поблагодарили: 18 раз

Re: модуль modbus

Сообщение ILGAS » Пн фев 06, 2017 12:23 pm

Помогите пожалуйста добавить домофон к Majordomo.
В modbus я не понимаю.
вот ссылка как добавили мой домофон через modbus на другой платформе.
https://kickstone.ru/article/intercom/
документация на домофон
https://kickstone.ru/article/intercom/b ... us_api.pdf
Заранее спасибо за помощь.
Аватара пользователя
blackangel
Сообщения: 148
Зарегистрирован: Пт окт 21, 2016 2:00 pm
Благодарил (а): 31 раз
Поблагодарили: 13 раз

Re: модуль modbus

Сообщение blackangel » Пт фев 17, 2017 12:31 pm

Есть предложение к автору!

Крайне неудобно, открывать отдельно взятую запись чтобы увидеть тип запроса и адрес. Поэтому предлагаю добавить в общий список колонки "Адрес" и "тип запроса". Было бы очень удобно наглядно смотреть какие у тебя адреса заняты.
Ответить