После обновления Wiren Board 7.3.4 неправильный порядок байт в устройстве

Добрый день.
Сегодня обновил Wiren Board 7.3.4 на последний тестинг релиз. ( release unstable.latest (as testing ). После чего стороннее Modbus RTU устройство , настроенное через свой шаблон стало отображать неправильные значения в виджете. Подозреваю что поменялся порядок байтов в драйвере. К сожалению насколько я понял есть всего два варианта (big и little endian) , пробовал и тот и тот вариант , но отобразить как показывало раньше в виджете не получается. Сейчас в виджете отображается 8387071, а ранее до обновления было от 0 до 63 . Вопрос что поменяли в последнем обновлении и как вернуть так как было ранее? .Код шаблона

 {
    "device_type": "GT-ADC-PID",
    "title": "GT ADC PID",
    "group": "g-io",
    "device": {
        "name": "ADC_PID ",
        "id": "gt-adc-pid",
        "groups": [
            {
                "title": "Channels",
                "id": "channels",
                "order": 0
            }
        ],
        "channels": [
            {
                "name": "ADC PID",
                "reg_type":  "input",
                "address": 0,
                "format": "u32",
                "word_order" : "big_endian",
		        "guard_interval_us":350,
                "type": "value",
                "group": "channels"
            }
        ],
        "translations": {
            "ru": {
                "Channels": "Каналы",
                "ADC PID": "Код АЦП",
                "GT ADC PID": "АЦП ПИД"
            }
        }
    }
}

P.S.Значение меняется но оно слишком большое (подозреваю что неправильный порядок байтов)

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

Добрый вечер. Поторопился наверное с вопросом. У нас гроза и так совпало что после обновления был раскат грома (сетевое напряжение 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

Еще раз извиняюсь что отвлек Вас от более сложных задач.

1 лайк

Ну и чтобы не создавать еще одну тему спрошу здесь, есть ли возможность или может быть планируется возможность переставлять байты как угодно?(как в некоторых SCADA).
123

Просто довольно часто приходится иметь дело с устройствами у которых производитель по разному трактует как лежат числа (особенно длиннее одного регистра Modbus) т.к. это не было оговорено в первоначальном стандарте. Из-за этого иногда приходится мудрить в правилах (переставляя как надо), что на мой взгляд не сильно удобно.

С уважением Юрий.

Ага, понятно. а возможно на то что это значение используется для индикации неполадок? Например как “Error” значения для некоторых регистров наших устройств.

Добавлю в пожелания, в общем если к LE BE добавить своп слов - то думаю оно покроет все необходимые комбинации.
То есть можно будет
ABCD → CDAB
ABCD → BADC
ABCD → DCBA

Или возможно что потребуется для 32 битного такое?
ABCD → ABDC?

1 лайк

Или возможно что потребуется для 32 битного такое?
ABCD → ABDC?

Пока не готов ответить. (просто не помню было ли именно такое). Для себя в ПО на Win сделали как на скрине (удобно я могу там любой порядок написать). А перебор значений не отнимает больше 5 минут, и это с учетом 64 битного значения