Добрый день.
Сегодня обновил Wiren Board 7.3.4 на последний тестинг релиз. ( release unstable.latest (as testing ). После чего стороннее Modbus RTU устройство , настроенное через свой шаблон стало отображать неправильные значения в виджете. Подозреваю что поменялся порядок байтов в драйвере. К сожалению насколько я понял есть всего два варианта (big и little endian) , пробовал и тот и тот вариант , но отобразить как показывало раньше в виджете не получается. Сейчас в виджете отображается 8387071, а ранее до обновления было от 0 до 63 . Вопрос что поменяли в последнем обновлении и как вернуть так как было ранее? .Код шаблона
Добрый вечер. Поторопился наверное с вопросом. У нас гроза и так совпало что после обновления был раскат грома (сетевое напряжение 230 В на долю секунды пропадало), но ИБП вытянул. При этом WB и модули MAI,MAO, продолжили работу, а стороннее 24 битное АЦП с усилителем для измерения фемто-амперных токов подвисло (вернее усилитель ). Перезагрузка устройства по питанию помогла. Спасибо Вам за просьбу посмотреть на ответ от устройства. Остановил драйвер сделал запрос и стало сразу понятно что вопрос не в драйвере , а ответе устройства. Вот до перезагрузки по питанию
root@wirenboard-ЧЧЧЧЧЧ:~# modbus_client --debug -mrtu -b115200 -pnone -s1 /dev/ttyRS485-2 -a8 -t0x04 -r0 -c 2
Opening /dev/ttyRS485-2 at 115200 bauds (N, 8, 1)
[08][04][00][00][00][02][71][52]
Waiting for a confirmation...
<08><04><04><00><7F><F9><FF><51><4C>
SUCCESS: read 2 of elements:
Data: 0x007f 0xf9ff
Здесь видно что число будет большое 00><7F><F9><FF
После перезагрузки
root@wirenboard-xxxxx~# modbus_client --debug -mrtu -b115200 -pnone -s1 /dev/ttyRS485-2 -a8 -t0x04 -r0 -c 2
Opening /dev/ttyRS485-2 at 115200 bauds (N, 8, 1)
[08][04][00][00][00][02][71][52]
Waiting for a confirmation...
<08><04><04><00><00><00><32><E3><51>
SUCCESS: read 2 of elements:
Data: 0x0000 0x0032
root@wirenboard-AVJFVAAD:~#
Здесь все верно
00><00><00><32
Еще раз извиняюсь что отвлек Вас от более сложных задач.
Ну и чтобы не создавать еще одну тему спрошу здесь, есть ли возможность или может быть планируется возможность переставлять байты как угодно?(как в некоторых SCADA).
Просто довольно часто приходится иметь дело с устройствами у которых производитель по разному трактует как лежат числа (особенно длиннее одного регистра Modbus) т.к. это не было оговорено в первоначальном стандарте. Из-за этого иногда приходится мудрить в правилах (переставляя как надо), что на мой взгляд не сильно удобно.
Ага, понятно. а возможно на то что это значение используется для индикации неполадок? Например как “Error” значения для некоторых регистров наших устройств.
Добавлю в пожелания, в общем если к LE BE добавить своп слов - то думаю оно покроет все необходимые комбинации.
То есть можно будет
ABCD → CDAB
ABCD → BADC
ABCD → DCBA
Или возможно что потребуется для 32 битного такое?
ABCD → ABDC?
Или возможно что потребуется для 32 битного такое?
ABCD → ABDC?
Пока не готов ответить. (просто не помню было ли именно такое). Для себя в ПО на Win сделали как на скрине (удобно я могу там любой порядок написать). А перебор значений не отнимает больше 5 минут, и это с учетом 64 битного значения