Я пытаюсь получить данные от контроллера кластера SMA по протоколу Modbus.Спецификация Modbus выглядит примерно так:
Addres:30517
Desc: Energy fed on all conductors.. ,
CNT(Word): 4(Number of assigned Modbus registers.) ,
Type: U64(i need to bit shift from 3 to 0?) ,
Format: FIX0( no decimal ) ,
Access: RO (Read only) ,
Теперь, когда я получаю ответ в 4 различных 16-битных регистрах, и я не уверен насчет сдвига битов, что, если я делаю это правильно или нет ..Я делаю что-то вроде ....
request = client.read_holding_registers(30513,4,unit=2)
result = request.registers
currentActivePowerH=(result[3]<<16) | result[2]
currentActivePowerL=(result[1]<<16) | result[0]
currentActivePower=(currentActivePowerH<<32) | currentActivePowerL
Также я не уверен насчет последовательности сдвига битов, которую мне нужно начинать с 3 до 0 или наоборот?
Вотописание о реестре в мануалах.Регистр Modbus имеет ширину 16 бит.Для более широких элементов данных подключенные регистры Modbus используются и рассматриваются как блоки данных.Количество подключенных регистров Modbus указано в таблицах назначений.Адрес первого регистра Modbus в блоке данных является начальным адресом блока данных.
Заранее благодарим за помощь.