WB7 7.4.2 wb-2404, к RS485-2 подключен Болид С2000-ПП в режиме мастер.
На WB стоит intrahouse.
Необходимо читать регистры состояния шлейфов + по этим же шлейфам значения АЦП.
Если читать регистры самим WB, значения читаются через раз, в логе ошибки вида “WARNING: [modbus] failed to read 1 holding(s) @ 40000 of device modbus:2: Serial protocol error: request timed out” по всем регистрам рандомно. Хотя изредка бывают короткие моменты чтения без ошибок.
Регистры состояний шлейфов читаются как:
"name": "SMK01",
"reg_type": "holding",
"address": "40000:8:8",
"type": "value",
"readonly": true,
"format": "u16",
"word_order" : "little_endian",
"scale": 1
Регистры АЦП читаются как:
"name": "SMK01_acp",
"reg_type": "holding",
"address": "30060:8:8",
"type": "value",
"readonly": true,
"format": "u16",
"word_order" : "little_endian",
"scale": 1
Однако, если отключить порт RS485-2 в конфигурации WB и плагином modbus intrahouse начать читать регистры, значения читаются. Есть нюанс - в intrahouse каналы чтения значений АЦП без галки “группировать при чтении”.
Лог intrahouse при этом:
25.09 20:19:12.408 READ: unitId = 2, FC = 3, address = 30060 (0x756c), length = 1
25.09 20:19:12.764 IH: get [ { id: 's-xPirdq4', value: 0, title: 'smk01', chstatus: 0 } ]
set undefined
25.09 20:19:12.964 READ: unitId = 2, FC = 3, address = 30089 (0x7589), length = 1
25.09 20:19:13.010 IH: get [ { id: 'GAnWBjNwQ', value: 0, title: 'dip01', chstatus: 0 } ]
set undefined
25.09 20:19:13.211 READ: unitId = 2, FC = 3, address = 30090 (0x758a), length = 1
25.09 20:19:13.262 IH: get [ { id: 'hMzHYhwxp', value: 1, title: 'dip02', chstatus: 0 } ]
set undefined
25.09 20:19:13.462 READ: unitId = 2, FC = 3, address = 30091 (0x758b), length = 1
25.09 20:19:13.514 IH: get [ { id: 'cLAtZZ0-y', value: 1, title: 'dip03', chstatus: 0 } ]
set undefined
25.09 20:19:13.714 READ: unitId = 2, FC = 3, address = 30092 (0x758c), length = 1
25.09 20:19:13.768 IH: get [ { id: 'dj9hKk0_p', value: 0, title: 'dip04', chstatus: 0 } ]
set undefined
25.09 20:19:13.968 READ: unitId = 2, FC = 3, address = 30093 (0x758d), length = 1
25.09 20:19:14.020 IH: get [ { id: 'NVCwK_9P0m', value: 0, title: 'dip05', chstatus: 0 } ]
set undefined
25.09 20:19:14.220 READ: unitId = 2, FC = 3, address = 30094 (0x758e), length = 1
25.09 20:19:14.273 IH: get [ { id: 'KvrtiysAy', value: 0, title: 'dip06', chstatus: 0 } ]
set undefined
25.09 20:19:14.473 READ: unitId = 2, FC = 3, address = 40000 (0x9c40), length = 35
25.09 20:19:14.554 IH: get [
{ id: 'mNF_TgfTt', value: 117, title: 'smk01', chstatus: 0 },
{ id: 'xNdVfRicr', value: 24, title: 'dip01', chstatus: 0 },
{ id: '2NuBtbGJ1p', value: 24, title: 'dip02', chstatus: 0 },
{ id: '6S3IdM2NB9', value: 24, title: 'dip03', chstatus: 0 },
{ id: 'ju9wxkXDE', value: 24, title: 'dip04', chstatus: 0 },
{ id: '4OhjSzB7w', value: 24, title: 'dip05', chstatus: 0 },
{ id: 'itN0yFI4c', value: 24, title: 'dip06', chstatus: 0 }
]
set undefined
Конфигурация каналов intrahouse:
UINT8, 1 Байт, Little-Endian,
Как реализовать безошибочное чтение регистров средствами самого WB?