Купил, поставил, втянул в иоброкер. Пытаюсь читать регистры:
_address deviceId name description unit type len factor offset formula role room cw isScale
0 35 Температура Температура (x0.1) °C int16be 1 0,1 0 value.temperature false false
1 35 Относительная влажность Влажность (x0.1) %RH int16be 1 0,1 0 value.humidity false false
2 35 Освещённость Освещённость (лк) лк uint16be 1 1 0 value.brightness false false
107 35 Сырое значение VOC Raw VOC signal - uint16be 1 1 0 value false false
108 35 Версия VOC датчика VOC sensor version - uint16be 1 1 0 value false false
359 35 Тип VOC датчика Модель VOC-датчика - uint16be 1 1 0 value false false
371 35 VOC датчик Наличие датчика VOC - uint16be 1 1 0 value false false
Температура, влажность, освещенность - считываются нормально. в 371 значение 1, т.е. датчик есть. А вот в 359 значение 65535, то бишь ошибка. Регистр 107 отдает значение 33085, я так понимаю это не ошибка. При попытке добавить 11й регистр адаптер вылетает с ошибкой чтения, прибор отвечает что нет такого регистра. Датчик надо как-то инициализировать?
Это какой то сторонний софт, к сожалению нет опыта работы с ним.
Да в общем неважно. Поскольку остальные регистры считывает стабильно и без ошибок, можно предполагать что подключение корректно работает.
Согласно карте регистров значения верны
Почему у прибора “верным“ значением типа датчика является “ошибка“?
Сырые значения так же считываются.
Да. Что удивительно в ситуации когда тип датчика “верный“, он же “ошибка“.
Здесь непонятно, есть возможность почитать этот регистр с помощью modbus_client
не знаю, правильно ли сформировал запрос (адрес 35, ip и порт правильно, регистр 11 ):
modbus_client_1.3.0.exe --debug -mtcp -a35 -c1 -r11 -t0x04 -o300 -p23 192.168.12.65
Connecting to 192.168.12.65:23
[00][01][00][00][00][06][23][04][00][0B][00][01]
Waiting for a confirmation…
<23><04><06><00><00><00><00>
Invalid transaction ID received 0x2304 (not 0x1)
ERROR occured!
Иоброкер при добавлении 11 регистра выдает:
modbus.0 2026-01-03 18:30:23.486 error Error response: Data address of some or all the required entities are not allowed or do not exist in slave
modbus.0 2026-01-03 18:30:23.486 error Error response for FCx4: Illegal Data Address
Кстати, могу отправить запрос через веб-интерфейс преобразователя. Если напишете какой, ИИ не может сформировать, все время ошибка Can not transfer to HEX!
кажется нашел решение. Создал отдельный инстанс (экземпляр опросчика модбас), оставил в нем только 11й регистр, и получил на него данные. Получается что проблема в группировке запросов?
Т.е. показания сейчас приходят? Удалось интегрировать данные в ваш софт?
да, ppb идет, но оба инстанса иногда падают в ошибку, видимо во время одновременных запросов. Что можно сделать с группировкой запросов? И что можно сделать с отображением модели и версии сенсора?
Апд: согнал все регистры в один инстанс, поставил опрос по одному регистру, вроде работает. Остается вопрос с моделью и версией.
Какая ошибка? Покажите пожалуйста запрос (отправляемый байты) ну и ответ на него.
ответом на запрос регистра приходит 65535. Конкретный запрос отправить не могу, ПО не показывает что именно запросил. Судя по тому что все остальные регистры опрашиваются корректно, данные приходят адекватные, да и тут приходит осмысленное значение (65535 = 0xFFFF), проблема не в запросе. Почему прибор может отвечать “ошибка“ на запрос типа датчика VOC?
Что такое “21510”?
Это значение, которое прибор отправляет в ответ на опрос регистра 108. Про корректность опроса см выше, я не могу себе представить ситуацию, когда запросы для всех регистров составляются нормально, а для этого - нет.
На картинке результат опроса регистров. Как такое может быть?
У меня не получилось заставить его работать, ИИ не справился с формированием команды. Если подскажете, как опросить эти регистры, сделаю. Айпишник 192.168.12.65, порт 23, адрес слейва 35.
Например в прошивке нет поддержки этого регистра.
тогда бы прибор сваливался в ошибку, а не возвращал 0xFFFF. Прибор куплен меньше месяца назад, прошивка 4.34.
ЗЫ. убрал преобразование регистров средствами адаптера, чтобы видеть что прибор отдает. Результат на картинке.
Даже если вы опросите modbus_client то получите эти значения. В карте регистров 108 и 359 указаны значения по умолчанию 65535 соответственно при запросе должны возвращаться (65535 = 0xFFFF).
Могу предположить что VOC отдает своё значение в регистр 108, а в 359 нет, т.е. не работает с данным регистром.
Почему 108й регистр возвращает иное значение попробую уточнить у наших разработчиков после 12.01 числа.
да, это наверное понятно. только я тоже не знаю как это сделать. А главное, полностью согласен с Bringer - коллеги рекомендуют полную фигню, не имеющую отношения к решению вопроса. Сам копать не готов, если коллеги дадут нормальную инструкцию по обновлению прошивки под виндой через сеть - сделаю конечно.
да, это наверное понятно. только я тоже не знаю как это сделать. А главное, полностью согласен с Bringer - коллеги рекомендуют полную фигню, не имеющую отношения к решению вопроса. Сам копать не готов, если коллеги дадут нормальную инструкцию по обновлению прошивки под виндой через сеть - сделаю конечно.
Кстати, эта проблема никуда не делась. версия и тип по прежнему отображаются как попало. Но это некритичная проблема, конечно.