Библиотека Python modbus, поддерживающая расширенный адресный интервал?
У меня есть устройство Modbus RTU, информация о котором хранится в нестандартных адресах данных.
Например, он сохраняет считанные значения (32-битное число с плавающей запятой IEEE-754, ссылка преобразователя) в регистр с номером 1003 - 1004.
Я думаю, это означает, что я больше не могу использовать стандартные библиотеки Python + Modbus RTU, напримерmodbus-tk
а также pymodbus
.
Что можно сделать в этой ситуации?
Особенности устройства
- Устройство: датчик CO2 E + E Elektronik, серия EE872
- Руководство пользователя (раздел 5.2 содержит информацию о Modbus RTU)
- Устройство подключено к машине с Windows 10 с Python 3.6
1 ответ
Вы можете использовать другой тип формата данных с modbus-tk, указав его как необязательный аргумент execute
метод
# Read and write floats
# master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, starting_address=0, output_value=[3.14], data_format='>f')
# logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 2, data_format='>f'))
Data_format основан на python struct
модуль. Ожидаемые значения перечислены здесь.
https://docs.python.org/3.7/library/struct.html
Я надеюсь, что это помогает