Я читаю и декодирую значение float_32, используя pymodbus.
Раньше я декодировал это следующим кодом:
from pymodbus.client.sync import ModbusTcpClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
cli = ModbusTcpClient('an-IP')
cli.connect()
req = cli.read_holding_registers(<hex-address>, count=4)
dec = BinaryPayloadDecoder.fromRegisters(req.registers, endian=Endian.Little)
print(dec.decode_32bit_float())
Но недавно я столкнулся с этой ошибкой:
TypeError: fromRegisters() got an unexpected keyword argument 'endian'
[ ОБНОВЛЕНИЕ ]
Я думаю, что более новая версия pymodbus
была изменена (аргумент endian
устарел):
Ссылка : похоже, измененные аргументы, но не документация
Затем я изменил эту строку следующим образом:
dec = BinaryPayloadDecoder.fromRegisters(
req.registers,
byteorder=Endian.Big,
wordorder=Endian.Little)
Проблема:
Теперь я хочу проверить версию pymodbus, чтобы узнать, какая версия декодирования должна использоваться.