Обратите внимание, что по документации этот регистр на 32 бита.
В моем (первоначальном) шаблоне еще есть еще один бит, но он читается из другого регистра, который на 16 бит. И видимо правильно читается.
Мы планируем еще кондиционеры подключать по модбус (обычному) и хотелось бы все-таки с этим вопросом разобраться. Вероятно он звучит как “правильное чтение бит из регистра размерностью 32 бита”.
Спасибо!
Ну или как вариант - читать 32 бита, что похоже работает, и потом по его обновлению менять виртуальное устройство “статус”.
Да, именно это сейчас работает не совсем верно. То есть чтение битов возможно только с одного регистра. Нельзя прочитать младшие биты из “32битного” (пары регистров.
Я это описал и отдал разработчикам. То есть в случае указания битов для чтения игнорируется размерность.
Да, тоже как вариант, если использовать программный разбор и вывод в виртуальные контрлы - то вполне рабочий.
Правильно ли я понял, что чтение бит работает только если регистр “обычный” 16-ти битный, а если он на 32 бита, то это не работает вообще никак никогда? (то есть читать тот же 0-й регистр битным образом как 16-ти битный тоже не дает правильного результата, если нужны младшие биты)?
И если делать через виртуальный контрол - он (виртуальный контрол) может быть только у виртуального устройства? Нельзя к “реальному” его добавить?
Все регистры Modbus 16-битные. Представление их словами, двойными словами - это уже на более верхнем уровне.
Дает. Для одного регистра - работает. То есть из одного регистра все читается. Но младшие биты у вас в регистре 1. В 0 - страшие.
Можно, но связано с грязным хаком, который разработчики не рекомендуют категорически.
Просто для примера. Не надо так делать.
Как писал выше - сейчас просто читайте биты из 1 регистра.