Конфликт устройств с одним ID на разных портах RS485

Есть два одинаковых slave modbus устройства с одним ID. Были подключены к разным портам и проблем не было. Понадобилось заменить старый контроллер на новый и теперь одновременно эти устройства не работают. Почему так происходит? Оба Wiren 5. На старом wb-mqtt-serial 1.14.6 на новом 1.26.5.

И ещё одна проблема вылезла, на новом контроллере A1_IN и A2_IN постоянно мигают и грузят систему, что работать с ней становится не возможно. К этим входам подключены аналоговые датчики. На старой системе, опять же, проблем таких не наблюдалось. Проблема, конечно, решается отключением этих входов из конфиг файла, но хотелось бы понять, почему так происходит.

Ребята, вы хоть ответьте, нормально, что на разных портах конфликт устройств с одним ID или нет?

Добрый день!

Простите за задержку, ответственный сотрудник заболел. Постараемся ответить в ближайшее время.

Проблема подтвердилась, разработчики уведомлены, но исправление будет в лучшем случае через 2 месяца.

Есть два варианты временных решений:

  1. Изменить адреса Modbus-устройств, чтобы они были разными.
  2. Оставить адреса одинаковыми, но при настройке устройств через веб-интерфейс (пункт “Serial Device Driver Configuration”) в настройках каждого из этих двух устройств:
    – нажать Properties рядом с именем устройства,
    – поставить галочки Device name и MQTT id of the device,
    – в появившееся поле Device name вписать название для отображения в веб-интерфейса (например, “Реле на первом порту”), а в MQTT id of the device вписать любой идентификатор латиницей (но разные для этих двух устройств).

К сожалению, способ с Device name и MQTT id не помогает. всё так-же выдает ошибку
user.notice serial: FATAL: Serial protocol error: device address collision for slave id 16 (“16”)

Понятно, что сменить адрес было бы логично, но, по определённым причинам, такой возможности нет.

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

И что можете сказать по второй ошибке: A1_IN и A2_IN постоянно мигают и грузят систему?

Здравствуйте. Эта ошибка была исправлена в версии 1.29.1. Обновитесь командами:

apt-get update
apt-get install libwbmqtt0 wb-mqtt-serial

После этого версии должны быть wb-mqtt-serial 1.40.4 и libwbmqtt 1.7.1
При этом Device Name и MQTT id должны быть переопределены как Вам подсказал @poglazov poglazov - этот недочет еще не исправлен.

1 лайк

Да, я свой вариант обхода проблемы проверял именно с wb-mqtt-serial 1.40.4

Добрый день! у меня также в одном заказе попались два устройства с одинаковым ID. Вместе они не работают. Как решить эту проблему? ID устройства как -то можно изменить?

Добрый день!
Если речь идёт про использование на одной шине RS-485, то два устройства с одинаковым адресом не могут работать из-за принципа работы протокола Modbus RTU. Но устройствам с Modbus RTU нашего производства адрес можно изменить: https://wirenboard.com/wiki/Wiren_Board_Device_Modbus_Address#.D0.98.D0.B7.D0.BC.D0.B5.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.B0_.D1.83.D1.81.D1.82.D1.80.D0.BE.D0.B9.D1.81.D1.82.D0.B2.D1.83_.D1.81_.D0.B8.D0.B7.D0.B2.D0.B5.D1.81.D1.82.D0.BD.D1.8B.D0.BC_.D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.BE.D0.BC
Если речь идёт про устройства с одинаковыми адресами на разных шинах, то они могут работать одновременно, это не противоречит стандарту Modbus RTU. Но чтобы они корректно отображались в нашем ПО и веб-интерфейсе, им нужно присвоить разные Device name и MQTT id of the device, как я писал здесь: Конфликт устройств с одним ID на разных портах RS485 - #5 от пользователя poglazov Либо можно тоже изменить адрес одному из устройств, тогда назначенные автоматически идентификаторы тоже будут разными.

Да, все устройства на одной шине. Спасибо за подсказку, адрес на одном из устройств изменил, теперь все работает.

1 лайк