Проблемы с подключением Pymodbus RTU

Я новичок с Python и Modbus, и я пытаюсь управлять вентилятором, подключенным к последовательному порту с pymodbus в течение нескольких часов. С помощью фирменного программного обеспечения от производителя я смог управлять вентилятором, поэтому само соединение работает. Тем не менее, мой собственный код не делает.

В соответствии с руководством вентилятор установлен на следующие значения:

режим: RTU

скорость передачи данных: 19200

паритет: даже

время ожидания: 1

ID подчиненного: 247 (F7h)

база данных: 8

Я изменил пример кода pymodbus из примеров библиотеки Pymodbus. Это мой код:

from pymodbus3.client.sync import ModbusSerialClient as ModbusClient
Fan = ModbusClient(method='rtu',port ='/dev/ttymxc1', parity = 'E', baudrate='19200', timeout=1)
connection = Fan.connect()
a = Fan.write_register(2,1, unit=0xF7)
b = Fan.read_holding_registers(2,1, unit = 0xF7)
Fan.close()

Обе команды чтения и записи приводят к следующей ошибке:

pymodbus3.exceptions.ModbusIOException: Modbus Error: [Input/Output] Server responded with bad response

То же сообщение я получаю, даже если кабель не подключен.

У кого-нибудь есть предложение, что не так?

1 ответ

Тайм-аут - это время, в течение которого порт ожидает ответа.

Установите время ожидания примерно на 2000, 1 равно 1 мс, и они, вероятно, означают 1 с.

И попробуйте также адрес 1 (если вышеупомянутое не работает), проверьте также, может ли адрес Modbus быть настроен на что-то другое (это могут быть некоторые переключатели на вентиляторе).

Другие вопросы по тегам