Я пытался подключиться к устройству, используя последовательный порт и RTU Modbus. Устройство представляет собой частотно-регулируемый регулятор:
Который подключен к моему ноутбуку через следующий преобразователь RS485 в USB:
https://www.amazon.co.uk/gp/product/B01E8JRL6O/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
Инструкции к устройству, которое я подключил, чтобы предоставить пример использования для чтения данных с помощью Modbus, как показано ниже:
С учетом вышеизложенного я попытался выполнить запрос на чтение с помощью следующего кода:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
modbus = ModbusClient(method='rtu', port='/dev/tty.usbserial-AQ00BYCR', baudrate=9600, timeout=1)
modbus.connect()
test = modbus.read_holding_registers(1, 1, unit=1)
print (test)
Выше я предполагаю, что строка:
test = modbus.read_holding_registers(1, 1, unit=1)
означает, что читается адрес регистра 1, для 1 кадра чтения и для идентификатора устройства 1. Насколько я понимаю, этот запрос соответствует примеру инструкции, показанному выше. Однако, к сожалению, я постоянно получаю сообщение об ошибке:
Ошибка Modbus: [Вход / Выход] Ошибка Modbus: [Недействительное сообщение] Получено неполное сообщение, ожидается как минимум 2 байта (получен 1)
Кто-нибудь знает, почему я получаю эту ошибку? И, во-вторых, вычисляется ли CRC на лету pymodbus? Или я должен как-то это вычислить и включить?
Любая помощь высоко ценится!