WB-MIR v2 не отзывается по протоколу ModbusRTU


#1

Добрый день ! Прошу подсказать решение проблемы с модулем WB-MIR v2. Модуль работал пока читал с него только температуру, наступила необходимость подключать возможности IR, после нескольких чтений из регистров от 2000 и далее, модуль перестал отзываться по шине RS485.


WB-MIR v.2. Поддерживаемые устройства
#2

Александр, здравствуйте!

Подскажите, чем читали? Какая была последовательность ваших действий, прежде чем модуль отказал? Вы используете наш контроллер Wiren Board?
Попробуйте заново установить modbus-адрес модуля или узнать текущие параметры коммуникации, воспользовавшись скриптом из нашей статьи https://contactless.ru/wiki/index.php/UART_Communication_Settings


#3

#4

Отвечу по порядку:

  • я использую достаточно много и достаточно долго вашего оборудования, кроме самого контроллера
  • никаких нареканий не было (бывают программные глюки в виде зависаний на несколько секунд при чтении регистров не по документации, но прошивка восстанавливает работу)
  • работаю по ModbusRTU множеством способов (кроме Ваших технологий)
  • с WB-MIR проделал все возможное и согласно Ваших рекомендаций на WiKi и тупым мониторингом RS485, модуль молчит, светодиодик внутри горит постоянно, не моргает как у других модулей (пришлось вскрыть от безисходности)

Вопрос больше принципиальный, возможен ли выход из строя аппаратно или прошивка затерлось ?

Если прошить заново низя, придется покупать новый модуль(ли) и очень осторожненько их юзать.


#5

Если что-то затерлось, то не прошивка, а память команд/настроек. Ну и выход из строя железа тоже нельзя полностью исключить, но вряд ли.
Я правильно понял, что ни установка адрес, не обращение к модулю с перебором всех возможных коммуникационных параметров не дало результата? Каким образом и на какой платформе вы выполняли скрипт из wiki? Работает ли он у вас с другими, исправными устройствами?
Серийный номер можете сказать? Будем решать, что делать.


#6

SN: 4272156422
A: 53

У меня контроллер свой под Windows работает, я не скрипт Ваш использовал, а методику поиска модуля, пройтись по адресам от 1 до 247(255) с разными параметрами Com порта.
Все модули работают, кроме этого.
Очень нехорошее ощущение (как разработчика), записью в регистры на что-то очень важное наехал.
Если возможности залить Вашу работающую прошивку и конфигурацию нет, то закроем тему.


#7

Уточните, ещё, пожалуйста, вы адрес тоже пытались прошить новый?
ПО и хранение данных в памяти устроено таким образом, что теоретически вы не могли затереть записью в одни регистры содержимое других.
Мы пробуем воспроизвести вашу ошибку, вы можете более подробно описать, что именно вы делали с контроллером. Я полагаю, что возможность восстановить работоспособность вашего модуля есть.


#8

Добрый день!

Как вариант, можете прислать нам WB-MIR на диагностику. Если там действительно что-то сломалось, то мы разумеется бесплатно починим. Если с устройством всё в порядке, то нужно будет оплатить стоимость работы инженера (500-1000 рублей).


#9

Так и сделаю, при следующей закупке Ваших модулей, этот вышлю.
Спасибо всем за помощь!


#10

Добрый день еще раз !

Докопался до истины своей (Вашей - если захотите исправить прошивку) проблемы )))

При чтении начиная с регистра адресом 2000 и количеством более 100 регистров, Ваша прошивка (софт залитый в микрочипик) сбрасывает портовую (RS485) скорость до 1200bits/sec, сам, молча, без предупреждения. Проверил трижды, все точно. Было потрачено два дня на поиски причины )

Попутно выяснилась еще одна проблема - люди - не используйте адаптеры USB-RS485 от фирмы БОЛИД, глюканутые!

Все хорошо, модуль работает, но надо учитывать поведение прошивки.


#11

Дополнение по модулю WB-MIR v2

регистры 5000, 5001 и 5002 - это coil регистры, что бы в них появилось значение 1 нужно записывать 0xFF00, а не как указанно в документации 0x0001.


#12

Александр, мы посмотрели версию прошивки вашего устройства – это последняя версия, которая стоит на большинстве устройств WB-MIR v2.

  1. Мы провели тестирование на устройстве с такой же прошивкой. Мы читали по 125 регистров, начиная с адреса 2000, одной командой сначала с помощью modbus_client и нашего контроллера, затем с помощью Modbus Poll с рабочей станции с Windows 10 и адаптера “Болид USB-RS485 изм.9”. Ни в каком из перечисленных вариантов сбоев не происходило. Возможно, проблемы с вашим конкретным адаптером или ПО.

  2. В нашей документации нигде не сказано, что надо записывать 0x0001 в coil-регистр. Там сказано “Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу 5000.” Coil-регистры по определению однобитовые, и записать в них можно 0 или 1. Какие данные передаются при этом по шине – другой вопрос. Если вы читали нашу статью об основах протокола Modbus (https://contactless.ru/wiki/index.php/Протокол_Modbus), то там четко сказано, какие данные передаются для записи 0 (выключить) и 1(включить) в coil-регистры: “Значение, которое нужно записать (0 — выключить, 0xFF00 — включить)”. Разное ПО по-разному записывает эту единицу. Применительно к софту на наших контроллерах: программе modbus_client достаточно указать 1 в качестве аргумента при записи в coil-регистр. modbus_client передаст нужные 0xFF00 по RS-485. Другое ПО может работать иначе.


#13

Прочитайте 150 регистров и все поймете. А в документации приведите (если хотите) к одному виду, ваше оборудование принимает 0xFF00 для coil, так и пишите везде.
Я вам ничего не доказываю, а натыкаюсь на несоответствие описания и работы модуля. У меня нет цели вас уличать в ошибках, при разработках это нормально.


#14

А вот это интересно. “Максимальный размер ADU в последовательных коммуникационных линиях составляет 253 байта (из максимальных, разрешенных спецификацией 256 байт вычитается 1 байт адреса и два байта контрольной суммы).” То есть holding-регистров можно прочесть не больше 125 за одну команду. А вам удается прочесть 150 и при этом что-то портится. Протестируем завтра.

Наше оборудование поддерживает стандарт Modbus RTU для последовательных линий связи, он всё и определяет, и количество регистров при одновременном считывании, и как записывать 1 и 0 в coil-регистры.

Я специально подробно останавливаюсь на этом вопросе, чтобы все, читающие этот форум после нас, чётко представляли себе, что к чему.


Яндекс.Метрика