Читаю регистр как целиком, так и побитово:
{
"group" : "vav1",
"address" : "8002",
"format" : "u16",
"name" : "mvav1_task_control",
"reg_type" : "holding",
"type" : "value"
},
{
"group" : "vav1",
"address" : "8002:0:1",
"format" : "u16",
"name" : "mvav1_task_control_bit0",
"reg_type" : "holding",
"type" : "value"
},
{
"group" : "vav1",
"address" : "8002:1:1",
"format" : "u16",
"name" : "mvav1_task_control_bit1",
"reg_type" : "holding",
"type" : "value"
},
{
"group" : "vav1",
"address" : "8002:2:1",
"format" : "u16",
"name" : "mvav1_task_control_bit2",
"reg_type" : "holding",
"type" : "value"
},
Выводится так:
Регистр у изготовителя описан так:
HOLDING [8002]
Формат: BITMAP16
Имя: mvav1_task_control
Регистр управления
Значения битов (именованный набор VAV_task_control): (показать/скрыть)
Bit 0: Вентиляция VAV зоны включена
Если данный флаг не установлен, то заслонка полностью закрывается.
Bit 1: Работать локально от ручного задатчика
Bit 2: Регулировать параметр
Данный бит предназначен для временного отключения регулирования параметра (CO2, температура и т.д.). При отключении бита осуществляется переход на прямое задание расхода.
Если для VAV зоны выбран “Тип поддерживаемого параметра в VAV зоне” равным “Прямое управление расходом”, то данный бит сбрасывается автоматически.
В нужной мне конфигурации, регистр хранит значение 0x0005 (побитово 101), что правильно.
Но выводится побитово в интерфейс WB неправильно - 111.
Прокинул все 4 параметра из шаблона устройства в Home Assistant и обратил внимание, что mvav1_task_control_bit1 на короткую долю секунды иногда все-таки считывается как 0 (что правильно), это особенно видно, если смотреть историю значений.
Аналогичную историю показывает и график значений непосредственно в контроллере:
Родной софт изготовителя оборудования читает и отображает регистр корректно.
Что сделать, чтобы читалось и отображалось в контроллере WB7 корректно? У меня таких битовых регистров много, и часть выводится правильно, а часть забита единицами при правильных нулях