Проблемы с подключением 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 быть настроен на что-то другое (это могут быть некоторые переключатели на вентиляторе).