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

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

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

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

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

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

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

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

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

SN: 4272156422
A: 53

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

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

Добрый день!

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

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

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

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

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

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

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

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

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

Александр, мы посмотрели версию прошивки вашего устройства – это последняя версия, которая стоит на большинстве устройств 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. Другое ПО может работать иначе.

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

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

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

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

Добрый день! У нас две проблемы с работой модуля wb-mir v2. Были модули wb-mir v2 с прошивкой 3.9, нам поменяли на модули с прошивкой 4.6. Подключил пока один модуль (SN: 4266456870) к контроллеру WB6, но проблема с воспроизведением команд осталась, т.е. кондиционер (MSZ-LN35VGB) не реагирует на записанные команды с пульта. Потом решил проверить на телевизоре (Philips 15PF5121/58), он так же не реагирует: команды записываются в модуль, но, видимо, некорректно воспроизводятся. Через web-интерфейс модуль управляется, но через modbus_client не отвечает. Что с этим можно сделать ?

Arti-san/, добрый день! Очень много неизвестных, давайте разбираться.

  1. Какой шаблон вы используете?
  2. Какую последовательность обучения вы применяете?
  3. Пришлите скриншот веб-интерфейса с модулем
  4. Пришлите фотографию инсталляции (например, с кондиционером)
  5. При нажатии кнопки воспроизведения видно ли камерой обычного ИК-чувствительного телефона BR-сигнал (видит ли эта камера так же сигнал с пульта)?
  6. На какую команду modbus_client модуль не отвечает?
  1. WB-MIR v2
  2. Через вебинтерфейс. Например, переводим переключатель “Learn to RAM” в положение “ON”, нажимаем кнопку “On/Off” на пульте предварительно поднеся к ИК-приемнику модуля, затем переводим переключатель “Learn to RAM” в положение “OFF”.
  3. Сигнал видно, но он отличается.
  4. Все нормально, отвечает. Оказывается, неправильно вводил команду.

Замечательно! Скажите, а какой этап операции оказался для вас “камнем преткновения”, менее всего понятным. Может, стоит подробнее описать в документации?

Смущает, что в итоге при нажатии в вебинтерфейсе на кнопку “Play from RAM” кондиционер никак не реагирует. Аналогично и с телевизором, при обучении соответственно от пульта телевизора.

Так вам и не удалось через RAM воспроизвести команду – не очень понял? Передатчик вы относительно вплотную к приемному окну устройства (телевизора, кондиционера) располагали?