Не проходит часть данных с modbus устройства

Да они всегда красные, свой цвет и е меняют. Естественно я перегружал его и не один раз. В веб интерфейсе цвет не меняется в начале, после перезагрузки. У меня красным светятся не только эти поля.

На всякий случай вот лог (это снова переименованный архив zip) и конфиг сразу после перезагрузки.
wb-homa-modbus.conf (1.3 КБ) messages.txt (547.8 КБ)

Смотрю в файлы. Мы ее, причину, все ж найдем…

Вот что подозрительно:
В файле wb-homa-modbus.conf

"parity": "E",

Все устройства настроены на использование четности? Или только некоторые?
Ну и

"stop_bits": 1

Тот же вопрос. Давайте проверять все устройства, они должны быть настроены идентично.

Видимо не все. У меня счетчик 11-ое устройство работало только с такой четностью, с другой не получалось заставить работать, а вот ваши приборы работают вроде на другой четности. Но ранее у меня все было так же но работало. Когда сломалось и от чего не могу сказать, но после настройки, работало. Попробую сейчас отключить все кроме счетчика.

Странно получается. Даже если я отключаю какой то прибор (тот же 11 счетчик) то цвет его показателей никак не меняется, как было два первых красными, так и остались. Что это за глюк может быть? Раньше при отключении они краснели по одной. Устройство перегружал. Браузеры пробовал разные.

Если что-то одно работает с другими параметрами - то именно ему (устройству) надо их добавить.

                {
                    "slave_id": "11",
                    "device_type": "PD561Z",
                }

а в “общей” настройке порта - установить то что для остальных.
UPD: Не умеет менять четность для отдельных устройств.
Моя ошибка.
Давайте для всех установим одинаковые параметры.
Или вынесем счетчик на другой порт.

Я уже думал над этим, но тогда мне придется к этому устройству вести отдельную линию (новую), а это проблематично. Виртуально разделить порт как я понимаю нельзя и параметры у него строго фиксированы для всех устройств. У меня имеется 2 китайских устройства и 4 ваших, у счетчика я пробовал менять четность, но тогда его почему то не видит WB4.

А как вообще посмотреть настройки в например ваших устройствах? Какую команду отправить?

И почему при отключении устройства в Веб интерфейсе у него не краснеют и не обнуляются параметры? Раньше, я помню, при неправильной конфигурации прибора они один за одним становились “красными”, а при исправлении так же последовательно включались. Сейчас просто не меняются больше цифры.

Еще раз посмотрел настройки моего счетчика. Оказывается я пробовал менять в нем четность на N (у него есть экран с меню, там и менял) но это никак не влияет на его работу. Что бы там не поставил но связь с ним есть только при четности Е и 1 бит. Поэтому тогда так и оставил, а другие приборы вроде как работают и так. А вообще сильно влияет четность и стоповый бит? Вроде же работает. :slight_smile:

Тут описано:
https://wirenboard.com/wiki/index.php/Modbus-client

Общие регистры: https://wirenboard.com/wiki/index.php/Power_Meter_WB-MAP6S_Control_Registers

Останавливаем драйвер:

systemctl stop wb-mqtt-serial

То есть для того чтоб увидеть бит четности (адрес в примере - 82):

modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a82 -t0x03 -r111

Количество стоп-бит (адрес в примере - 82):

modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a82 -t0x03 -r112

И поменять тоже можно, записью в эти регистры.

Но ошибки показывает.

А чем вообще перекодировать ответ получаемый, как я понимаю в 16ричной системе? Особенно когда 2 байта. Я сейчас делаю это в онлайн конверторе Онлайн преобразование но это очень неудобно. Есть что то лучше?

У меня, как я понимаю

service wb-homa-modbus stop

Да, верно.
И да! ОТключить четность - это “none” (у нас).
N и E - это НЕ факт что именно отключение, это могут быть разные виды четности.
UPD: более подробно написал про четность.

Это у всех устройств или только ваших? А то чего то выдает ерунду какую то.

Data: 0x01b4

А у ваших устроств

Data: 0x0000

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

С адресами и с четностью разобрался. Теперь wb-homa-modbus.conf такой

“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 400,
“enabled”: true,
“guard_interval_us”: 100000

Но проблема с “красными” значениями никуда не ушла. Если хотя бы один раз возникает пропуск считывания значения, то оно становится красным и потом если считывание возобновляется то цвет не меняется. Помогает только удаление и перезапуск контроллера

mqtt-delete-retained /devices/wb-mr6c_191/#

В чем ещё может быть проблема?

Вроде работает. Я правильно понимаю, что значение становится красным если не получается получить значение, а снова меняет цвет на нормальный не сразу, а через какое то время? У меня по крайней мере так. Значение снова стало нормального цвета через примерно 30 мин, после того как данные начали снова считываться. И у меня все боле менее работает только с “poll_interval”: 400 если уменьшить до 300 то тогда начинают появляться “красные”. Это нормальное поведение? Можно исправить, а то больно редко обновляется учитывая что самих данных много. И за что отвечает параметр “guard_interval_us”: 100000?

Полное описание параметров:
https://github.com/wirenboard/wb-mqtt-serial/blob/master/README.md
Если уменьшение poll_interval вызывает ошибки - то посмотрите в описании есть

                    // Минимальный интервал опроса регистров данного устройства
                    // по умолчанию, в миллисекундах
                    "poll_interval": 10,

                    // Минимальный интервал между опросом индивидуальных регистров
                    // данного устройства в микросекундах
                    "guard_interval_us": 0,

Можно использовать эти параметры для отдельного устройства. Те, кто может работать “быстро” - работают, те кому нужны задержки - работают с задержками.