Не записывает в регистр modbus пву turkov zenit

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

Ошибка в логе при попытке изменения значения.

21-03-2023 20:44:08.141 [wb-mqtt-serial]	WARNING: [register handler] failed to write: <modbus:13:holding_single: 3>: Serial protocol error: illegal data address
21-03-2023 20:44:01.963 [wb-mqtt-serial]	WARNING: [register handler] failed to write: <modbus:13:holding_single: 3>: Serial protocol error: illegal data address

Конфиг устройства (часть wb-mqtt-serial.conf )

    {
      "baud_rate" : 9600,
      "data_bits" : 8,
      "devices" : 
      [
        {
          "channels" : 
          [
            {
              "address" : 1,
              "format" : "s16",
              "name" : "Power",
              "offset" : 0,
              "reg_type" : "holding",
              "scale" : 1,
              "type" : "switch"
            },
            {
              "address" : "2",
              "format" : "s16",
              "max" : 50,
              "name" : "Air temp",
              "offset" : 0,
              "reg_type" : "holding_single",
              "scale" : 1,
              "type" : "range",
              "units" : "deg C"
            },
            {
              "address" : "3",
              "format" : "s8",
              "max" : "4",
              "name" : "Fan speed",
              "offset" : 0,
              "reg_type" : "holding_single",
              "scale" : 1,
              "type" : "range",
              "units" : ""
            },
            {
              "address" : "4",
              "format" : "s8",
              "max" : 4,
              "name" : "Working mode",
              "offset" : 0,
              "reg_type" : "holding_single",
              "scale" : 1,
              "type" : "value"
            },
            {
              "address" : "7",
              "format" : "s16",
              "max" : "200",
              "name" : "VAV inlet setting",
              "offset" : 0,
              "reg_type" : "holding_single",
              "scale" : 1,
              "type" : "range",
              "units" : "Pa"
            },
            {
              "address" : "8",
              "format" : "s16",
              "max" : "100",
              "name" : "VAV outlet setting ",
              "offset" : 0,
              "reg_type" : "holding",
              "scale" : 1,
              "type" : "range",
              "units" : "Pa"
            },
            {
              "address" : 257,
              "enabled" : true,
              "format" : "s16",
              "name" : "Street air temp(D1)",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 0.1,
              "type" : "value",
              "units" : "deg C"
            },
            {
              "address" : 258,
              "format" : "s16",
              "name" : "Incoming air temp(D2)",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 0.1,
              "type" : "value",
              "units" : "deg C"
            },
            {
              "address" : 261,
              "enabled" : false,
              "format" : "s16",
              "name" : "Outgoing air temp(D5)",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 0.1,
              "type" : "value"
            },
            {
              "address" : "267",
              "enabled" : true,
              "format" : "s16",
              "name" : "Channel air temp D7",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 0.1,
              "type" : "value"
            },
            {
              "address" : "268",
              "enabled" : true,
              "format" : "s16",
              "name" : "Channel air humidity D7",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 0.1,
              "type" : "value"
            },
            {
              "address" : "262",
              "format" : "s16",
              "max" : "100",
              "name" : "Filter dirty",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 1,
              "type" : "value",
              "units" : "%"
            },
            {
              "address" : "265",
              "format" : "s16",
              "name" : "Incoming fan current",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 0.01,
              "type" : "value",
              "units" : "A"
            },
            {
              "address" : "266",
              "format" : "s16",
              "name" : "Outgoing fan current",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 0.01,
              "type" : "value",
              "units" : "A"
            },
            {
              "address" : "274",
              "format" : "s16",
              "max" : "100",
              "name" : "Incoming fan power",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 1,
              "type" : "value",
              "units" : "%"
            },
            {
              "address" : "275",
              "format" : "s16",
              "max" : "100",
              "name" : "Outgoing fan power",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 1,
              "type" : "value",
              "units" : "%"
            },
            {
              "address" : "263",
              "enabled" : false,
              "format" : "string",
              "name" : "Error code",
              "reg_type" : "input",
              "string_data_size" : 3,
              "type" : "value"
            },
            {
              "address" : "5",
              "enabled" : false,
              "format" : "s16",
              "name" : "Reserv1",
              "offset" : 0,
              "reg_type" : "holding",
              "scale" : 1,
              "type" : "value"
            },
            {
              "address" : "6",
              "enabled" : false,
              "format" : "s16",
              "name" : "Reserv2",
              "offset" : 0,
              "reg_type" : "holding",
              "scale" : 1,
              "type" : "value"
            },
            {
              "address" : "276",
              "enabled" : true,
              "format" : "s16",
              "name" : "Inlet pressure",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 1,
              "type" : "value"
            },
            {
              "address" : "277",
              "enabled" : true,
              "format" : "s16",
              "name" : "Outlet pressure",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 1,
              "type" : "value"
            }
          ],
          "enabled" : true,
          "frame_timeout_ms" : 3,
          "guard_interval_us" : 3000,
          "name" : "Turkov Zenit 550",
          "protocol" : "modbus",
          "setup" : [],
          "slave_id" : "13"
        }
      ],
      "enabled" : true,
      "parity" : "N",
      "path" : "/dev/ttyMOD2",
      "read_rate_limit_ms" : 3000,
      "stop_bits" : 1
    },

Добрый день. А если

“address” : “3”,
“format” : “s8”,
“max” : 4,

Добрый день. А если тот же регистр почитать/изменить с помощью modbus_client?

Спасибо за направление, та же ошибка. На чтение окей, на запись почему-то ругается. Получается это устройство откликается по-другому теперь? Пульт (через него подключение к ВБ) уезжал на обновление ПО, видимо что-то изменили…

root@wirenboard-AMENMA3Q:/etc# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyMOD2 -a13 -t0x03 -r2
Opening /dev/ttyMOD2 at 9600 bauds (N, 8, 2)
[0D][03][00][02][00][01][25][06]
Waiting for a confirmation...
<0D><03><02><00><11><68><49>
SUCCESS: read 1 of elements:
        Data: 0x0011
root@wirenboard-AMENMA3Q:/etc# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyMOD2 -a13 -t0x06 -r2 0x0011
Data to write: 0x11
Opening /dev/ttyMOD2 at 9600 bauds (N, 8, 2)
[0D][06][00][02][00][11][E8][CA]
Waiting for a confirmation...
<0D><86><02><03><A2>
ERROR Illegal data address
ERROR occured!

Да, скорее всего. Тут надо у производителя узнать - не сменилась ли карта регистров.

Ага, нашел . С командо 0х06 не работает, работает с командой 0х10. Можно заставить mqtt-serial через нее писать?

root@wirenboard-AMENMA3Q:/etc# modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyMOD2 -a13 -t0x10 -r2 0x0014
Data to write: 0x0014
Opening /dev/ttyMOD2 at 9600 bauds (N, 8, 2)
[0D][10][00][02][00][01][02][00][14][F2][BD]
Waiting for a confirmation...
<0D><10><00><02><00><01><A0><C5>
SUCCESS: written 1 elements!

Догадался :slight_smile:
у всех holding регистров в шаблоне должен быть теперь
“reg_type” : “holding_multi”

Сочувствую. Не все, к сожалению производители думают про удобство. Вот так взять и поенять команду…

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.